禁止WordPress程序REST API功能且移除wp-json链接

毋庸置疑WordPress算是当前比较好用的PHP程序,基本上个人博客、企业网站,小型商务网站都可以使用到。而且WordPress官方的更新、第三方的插件主题丰富,让这个程序变得越来越丰富多样,但是随着不断的升级功能,也会增加程序的负担和不安全因素。

比如从WordPress4.4开始增加REST API功能, 对于一般的网站是没有需要的,反而会拖累网站的速度,所以我们尽可能的禁止掉这些不必要的功能需求。我们在源代码中可以看到类似的链接字符。

<link rel=’https://api.w.org/’ href=’http://www.itbulu.com/wp-json/’ />

这里老季将记录下如何解决这个问题的过程,一来需要移除掉这个链接,二来需要禁止REST API功能。

第一、非插件方式

//屏蔽 REST API
add_filter('json_enabled', '__return_false' );
add_filter('json_jsonp_enabled', '__return_false' );
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');

// 移除头部 wp-json 标签和 HTTP header 中的 link
remove_action('wp_head', 'rest_output_link_wp_head', 10 );
remove_action('template_redirect', 'rest_output_link_header', 11 );

将脚本丢到当前主题的functions.php文件中。但是,我们会发现链接是去掉了,但是打开wp-josn还是可以看到输出字符。然后老季再启用到一个插件才可以解决。

此外,对于 WP 4.7 以上版本,还有种通过rest_api_init这个钩子来禁用 REST API 的方法

/*禁用未登录的用户*/
add_filter( 'rest_api_init', 'uzi_rest_only_for_authorized_users', 99 );
function uzi_rest_only_for_authorized_users($wp_rest_server){
    if ( !is_user_logged_in() ) {
        wp_die('非法操作!');
    }
}

第二、disable-json-api插件

插件地址:https://wordpress.org/plugins/disable-json-api/

下载和启动插件之后,可以彻底解决输出字符问题。

腾讯云限时秒杀【点击购买】

Vultr$3.5日本节点,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快【点击购买】!

阿里云香港、新加坡VPS/1核/1G/25G SSD/1T流量/30M带宽/年付¥288【点击购买】


`微信`扫码 加好友

发表回复

您的电子邮箱地址不会被公开。