屏蔽WordPress自带的REST API接口

屏蔽WordPress自带的REST API接口

温馨提示: 本文最后更新于 2025-02-23 17:24:38,某些文章具有时效性,若有错误或已失效,请在下方留言!

前言

为什么会想到发这样一个教程呢?前段时间在 CDN 后台看到某个站点一天发起了几百万个请求,当时我感到很纳闷的,于是去这个站点查看,才终于发现问题的根源。

图片[1]-屏蔽WordPress自带的REST API接口-星雨博客
图片[2]-屏蔽WordPress自带的REST API接口-星雨博客

说来话长,得从一个之前的美化教程说起,那个教程是通过 WordPress 自带的 REST API 接口实现的,但由于我没有充分考虑到一些逻辑问题,导致频繁请求 WordPress 的 API 接口,恰巧这位站长在使用代码时未修改 API 接口,造成大量请求被发送到本站。

由于站长未在主页上留下任何联系方式,我只好在 WordPress 上做了一些屏蔽措施,以防止进一步的请求。

部署教程

将下方代码放置在主题目录下的function.php或者新建一个func.php文件

add_filter('rest_pre_dispatch', function ($response, $server, $request) {
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
$site_url = get_site_url();
if ($origin && strpos($origin, $site_url) === 0) {
return $response;
}
if ($referer && strpos($referer, $site_url) === 0) {
return $response;
}
return new WP_Error('rest_forbidden', 'Forbidden', array('status' => 403));
}, 10, 3);
add_filter('rest_pre_dispatch', function ($response, $server, $request) {
    $origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

    $site_url = get_site_url();

    if ($origin && strpos($origin, $site_url) === 0) {
        return $response;
    }

    if ($referer && strpos($referer, $site_url) === 0) {
        return $response;
    }

    return new WP_Error('rest_forbidden', 'Forbidden', array('status' => 403));
}, 10, 3);
add_filter('rest_pre_dispatch', function ($response, $server, $request) { $origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : ''; $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $site_url = get_site_url(); if ($origin && strpos($origin, $site_url) === 0) { return $response; } if ($referer && strpos($referer, $site_url) === 0) { return $response; } return new WP_Error('rest_forbidden', 'Forbidden', array('status' => 403)); }, 10, 3);
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 共2条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码
    • 头像似水流年0