xmlrpc.php 是 WordPress 中一个用于支持远程发布和管理功能的接口文件。它允许第三方的应用程序(例如,桌面博客编辑器、移动应用等)通过 XML-RPC 协议与你的 WordPress 网站进行通信和操作。
为什么 xmlrpc.php 会被恶意扫描?
xmlrpc.php
已经成为黑客和恶意程序的主要攻击目标,原因如下:
- 暴力破解攻击 (Brute Force Attack):
xmlrpc.php
的wp.getUsersBlogs
或类似方法允许攻击者用一个请求尝试成百上千个用户名和密码组合。这比通过传统的登录页面(wp-login.php
)进行攻击要高效得多,因为后者通常需要为每次尝试都进行一次新的页面加载,更容易被安全插件检测和阻止。 - DDoS 攻击 (Distributed Denial-of-Service):攻击者可以利用成千上万个 WordPress 网站的
xmlrpc.php
的 pingback 功能,指挥它们同时向一个目标网站发送大量请求,形成大规模的分布式拒绝服务攻击,耗尽目标服务器的资源。
正是因为这些原因,即使是全新的网站,也会立即被自动化程序扫描 xmlrpc.php
,这会导致你的 VPS 或主机 CPU 和内存资源被大量消耗,出现网站卡顿甚至宕机的情况。
如何彻底解决 xmlrpc.php
的问题?
方法一:nginx location禁用
在网站nginx配置中添加:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
方法二:通过主题的 functions.php 文件添加代码
如果你不想安装额外的插件,可以将以下代码添加到你当前使用的主题的 functions.php 文件中。
add_filter( 'xmlrpc_enabled', '__return_false' );
这行代码会告诉 WordPress 禁用 XML-RPC 功能。
注意:如果你更换了主题,需要重新在新主题的 functions.php
文件中添加此代码。