前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress最新版完全禁用JSON REST API输出站点信息

WordPress最新版完全禁用JSON REST API输出站点信息

作者头像
沈唁
发布2018-07-26 17:56:38
1.5K0
发布2018-07-26 17:56:38
举报
文章被收录于专栏:沈唁志

WordPress 从 4.4 版本开始新增的 JSON REST API 功能,通过这个 REST API 可以很轻松的获取网站的数据,可应用于其他网站、手机 APP 或小程序等

前段时间使用过这个做了一段时间的小程序,后来感觉没必要,而且还使用的他人的插件,反而会拖累网站的速度,而且 REST API 采用 GET 请求方式,这就为 DDOS 攻击提供了一个新的攻击途径

今天我的引导页:QQ52O.CN使用的虚拟主机应该到期了,所以访问失败,有人艾特我说访问不了,吓了一跳,去看了一下访问错域名了,然后就顺手看了一下我的服务器宝塔就发现居然有人爬我网站,用的就是这个REST API

美国的ip,我以为是腾讯云加社区的爬虫,去群里问了一下运营人员,说不是他们的爬虫,果断禁掉,大哥我是小水管,你放过我吧 ?

所以我们应尽可能的禁止掉这些不必要的功能需求,并且去掉 head 里面输出 wp-json 链接,我之前就直接输出了,查看源代码就能直接看到

需要简单一点的话,我们可以直接使用插件Disable REST API来完全禁用 REST API,但我更倾向纯代码的方法,在这里就介绍下代码版兼容所有 WordPress 版本的完全禁用 REST API 或者说移除 head 里面 wp-json 链接的方法

直接将以下代码添加到主题的 functions.php 文件中即可禁用 JSON REST API

代码语言:javascript
复制
// 屏蔽 REST API
if ( version_compare( get_bloginfo( 'version' ), '4.7', '>=' ) ) {
    function disable_rest_api( $access ) {
        return new WP_Error( 'rest_cannot_acess', '无访问权限', array( 'status' => 403 ) );
    }
    add_filter( 'rest_authentication_errors', 'disable_rest_api' );
} else {
    // Filters for WP-API version 1.x
    add_filter( 'json_enabled', '__return_false' );
    add_filter( 'json_jsonp_enabled', '__return_false' );
    // Filters for WP-API version 2.x
    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 );

当然也可以借助 Nginx 来控制 /wp-json 的访问,这里就不说了,可以通过判断请求头的 UA 信息来操作,除了 iOS 跟 Android 设备,其它访问 /wp-json 的路径均返回 403 状态码

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:WordPress最新版完全禁用JSON REST API输出站点信息

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档