如果经常查看服务器日志,可能会发现某个名为 xmlrpc.php 的文件突然收到大量请求,甚至短时间内导致服务器CPU占用飙升。很多站长最初会误以为这是流量增长带来的正常现象,但实际上,大多数情况下这些请求都来自自动化攻击程序,而非真实用户访问。
xmlrpc.php 原本是 WordPress 用于与外部应用通信的接口文件,但随着 WordPress REST API 的普及,这项技术已经逐渐退出主流使用场景。然而,这个看似不起眼的文件却依然是黑客和恶意机器人最喜欢攻击的入口之一。
本文将详细介绍 xmlrpc.php 的作用、潜在安全风险,以及如何安全地将其禁用。
一、什么是WordPress的xmlrpc.php?
在 REST API 出现之前,XML-RPC 是 WordPress 与外部程序进行数据交互的重要方式。
例如:
- 使用手机APP发布文章
- 通过第三方博客编辑器管理网站
- 与其他博客进行Pingback和Trackback通信
这些功能都依赖 xmlrpc.php 文件完成。
简单来说,它允许外部程序在不访问 WordPress 后台的情况下直接与网站进行交互。
例如,当在文章中引用其他博客内容时,XML-RPC 会自动向目标网站发送通知,这就是早期博客系统常见的 Pingback 功能。
不过随着技术发展,WordPress REST API 已经成为主流解决方案,能够以更安全、更高效的方式完成这些工作。
对于绝大多数现代网站而言,xmlrpc.php 已经失去了实际价值,却仍然保留在系统中,成为一个额外的攻击入口。
二、为什么建议禁用 xmlrpc.php?
保留 xmlrpc.php 最大的问题在于:
它向外界暴露了一个不必要的访问接口。
攻击者可以利用其内置功能绕过部分安全机制,从而对网站发起各种攻击。
1、暴力破解登录攻击
正常情况下,WordPress 登录页面(wp-login.php)通常会配合安全插件或服务器规则限制登录尝试次数。
当某个IP连续输入错误密码时,系统会自动将其封锁。
但 XML-RPC 提供的 system.multicall 方法却能够绕过这一限制。
攻击者可以:
- 一次请求提交数百个用户名和密码组合
- 将大量密码猜测打包进一个HTTP请求
- 快速进行暴力破解测试
相比传统登录攻击,这种方式效率更高,也更难被普通安全策略发现。
因此,许多针对 WordPress 的自动化僵尸网络攻击都会优先利用 xmlrpc.php。
2、DDoS放大攻击
XML-RPC 中的 Pingback 功能还可能被用于DDoS攻击。
其原理是:
攻击者伪造目标网站IP地址,并向大量 WordPress 网站发送 Pingback 请求。
随后,这些网站会同时向受害服务器发送回调请求。

最终形成大规模流量洪水,导致:
- CPU资源耗尽
- 内存占满
- 网站无法访问
- 服务器宕机
这类攻击通常被称为:
XML-RPC Pingback Amplification Attack(Pingback放大攻击)
3、网站被入侵与恶意软件植入
服务器性能问题只是表面影响。
更严重的情况是攻击者成功破解管理员账号。
一旦获得后台权限,他们通常会立即:
- 上传后门程序
- 修改WordPress核心文件
- 安装恶意插件
- 篡改网站内容
- 劫持SEO流量
- 跳转至钓鱼网站或恶意页面
由于 XML-RPC 攻击通常较为隐蔽,很多站长直到网站被搜索引擎处罚后才发现问题。
三、如何检查 xmlrpc.php 是否启用?
可以通过以下三种方式快速检测。
方法一:浏览器直接访问
在浏览器中打开:
https://你的域名/xmlrpc.php
如果页面显示:
XML-RPC server accepts POST requests only.
说明 xmlrpc.php 仍处于启用状态。
如果返回:
- 403 Forbidden
- 404 Not Found
则说明该接口已经被禁用或拦截。
方法二:在线检测工具
网上有许多免费的 XML-RPC 检测工具。
检测结果通常有两种:
检测失败
说明工具无法连接 XML-RPC 接口,站点相对安全。

检测成功
说明 xmlrpc.php 可以正常访问,存在潜在安全风险。

方法三:使用命令行检测
如果拥有服务器权限,可以通过 cURL 测试:
curl -d "system.listMethods" https://yourdomain.com/xmlrpc.php
如果返回大量 XML 格式内容,则说明 XML-RPC 已启用。
四、如何禁用xmlrpc.php?
对于大多数网站来说,彻底关闭 XML-RPC 是最简单有效的安全措施。
方法一:使用插件禁用
最简单的方式是安装专门的禁用插件,例如:
Disable XML-RPC
安装并启用后,插件会自动拦截所有针对 xmlrpc.php 的访问请求。
优点:
- 操作简单
- 无需修改服务器配置
缺点:
- 增加额外插件
- 占用系统资源
- 长期可能影响网站性能
因此,如果能够直接通过服务器配置解决,通常更推荐后者。
方法二:通过服务器规则禁用
这是更彻底、更高效的做法。
Apache服务器
编辑网站根目录中的:
.htaccess
添加以下规则:
<Files "xmlrpc.php">
Require all denied
</Files>
保存后即可阻止所有访问请求。
Nginx服务器
如果网站运行在 Nginx 环境中,可在站点配置文件中加入:
location = /xmlrpc.php {
deny all;
}
保存配置后重新加载 Nginx:
nginx -s reload
即可生效。
五、修改前务必备份
需要特别注意的是:
无论是 Apache 还是 Nginx,错误修改配置文件都可能导致网站无法访问。
例如:
- 配置语法错误
- 代码放置位置错误
- 文件格式异常
都可能触发:
500 Internal Server Error
因此在修改前建议:
- 备份 .htaccess 文件
- 备份 Nginx 配置文件
- 创建服务器快照
- 执行网站完整备份
确保出现问题时能够快速恢复。
相关阅读:
《什么是wp-config.php文件?WordPress配置文件wp-config.php简单介绍》
分类:新闻资讯
标签:wordpress