在 WordPress 的历史中,XML-RPC 一直是一个争议功能。早期它被用于远程发布文章、移动客户端通信以及与其他平台的交互。但随着 WordPress REST API 的成熟,XML-RPC 的实际使用场景已经极少,大多数站点完全不需要它的存在。
然而,遗留的 XML-RPC 端点仍然带来了 安全隐患:
- 暴力破解攻击(利用 system.multicall 批量尝试用户名和密码);
- DDoS 放大攻击;
- 未授权信息探测。
如果你的网站并不依赖 Jetpack、移动客户端或旧版 API,强烈建议彻底禁用 XML-RPC。
方法一:通过插件关闭
如果你习惯使用插件,可以安装 Disable XML-RPC 之类的轻量级插件。
- 优点:无需修改配置,点一下即可。
- 缺点:插件越多,维护成本越高;同时它依赖于 PHP 层拦截,性能损耗略高。
方法二:在 .htaccess 或 Nginx 中屏蔽
针对 Apache 或 Nginx 环境,直接在服务器层面拦截请求更高效。
Apache / .htaccess 示例:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Nginx 示例:
location = /xmlrpc.php {
deny all;
}
这种方式直接在 Web 服务器层拒绝请求,不会占用 PHP 资源。
方法三:OpenLiteSpeed / LiteSpeed 环境
如果你使用 OpenLiteSpeed,可以在 Virtual Host → Contexts 里单独设置:
- 添加一个 Static Context
- URI 填写 /xmlrpc.php
- Location 指向网站根目录下的 xmlrpc.php 文件
- 设置 Accessible: No,并在 Access Control 里 Deny All
完成后 Graceful Restart,访问 /xmlrpc.php 会直接返回 403 Forbidden。
方法四:只允许特定服务访问(可选)
有的站点可能依赖 Jetpack 或移动端。如果完全关闭 XML-RPC 会影响使用,可以只允许特定 IP 段访问:
- WordPress 官方 Jetpack IP:192.0.64.0/18
- 在 Nginx、Apache 或 LiteSpeed 的访问控制中将这些 IP 设置为 Allow,其它一律拒绝。
总结
- 不需要 XML-RPC → 建议直接禁用,减少攻击面。
- 必须使用 Jetpack 等功能 → 采用 “白名单 + 拒绝其他” 的策略。
- 优先推荐 在 Web 服务器层拦截,避免 PHP 层浪费资源。
在 2025 年的 WordPress 环境里,彻底禁用 XML-RPC 已经是大多数站点的最佳实践。如果你还没处理,强烈建议尽早行动。