最近我们的网站遭受大量来自 xmlrpc.php 的 POST 请求,这导致服务器的 CPU 负载急剧上升,同时内存占用也高于平时水平,我们怀疑遭受了扫描攻击。这对WordPress站点的安全构成了威胁,因此我们必须高度重视。
XML-RPC 是用于WordPress与其他系统之间进行通信的协议规范。除了用于移动应用程序外,它还用于WordPress与其他博客平台之间的通信,以及支持引用和 pingback。然而,由于REST API已经集成到WordPress核心中,xmlrpc.php 文件现在已经不再被用于这种通信目的。
禁用 xmlrpc.php 方法
现在有必要在站点上禁用 xmlrpc.php,但许多站长可能不清楚如何完成这一操作。尽管最简单的方法是直接删除该文件,但由于WordPress经常更新,这会导致文件重新生成。 在这种情况下,我将分享五种禁用 xmlrpc.php 的方法供大家选择:
1. 使用插件禁用 xmlrpc.php
插件名称:Disable XML-RPC(By Philip Erb)
插件地址 https://wordpress.org/plugins/disable-xml-rpc/
2. 函数禁用 xmlrpc.php
在当前主题的 functions.php 文件中添加以下代码即可关闭 xmlrpc.php:
//通过 functions.php 函数文件禁用 xmlrpc.php
add_filter('xmlrpc_enabled', '__return_false');
3. 配置禁用
在WordPress根目录下编辑wp-config.php文件,在文件开头添加以下代码:
if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){
$protocol = $_SERVER['SERVER_PROTOCOL'] ?? '';
if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){
$protocol = 'HTTP/1.0';
}
header("$protocol 403 Forbidden", true, 403);
die;
}
4. Nginx/Apache 禁用 xmlrpc.php
Nginx 配置规则:
location ~* ^/xmlrpc.php$ {
return 403;
}
Apache 配置规则:
在 .htaccess 文件开头添加以下代码:
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
5. 云防火墙 CDN 禁止访问
这需要确保您的服务器IP得到保护,不被发现,然后可以配置云防火墙或CDN,阻止对xmlrpc.php的访问。这种方法可以进一步减少服务器性能开销,因为请求还未到达服务器就已被拦截。
另外,如果您使用宝塔的Nginx防火墙,也可以使用防火墙来阻止对xmlrpc.php的访问。但需要注意这样做可能会占用服务器资源。在确保IP不泄露的情况下,使用云端防火墙或CDN来阻止访问是最佳选择。

暂无评论内容