如何彻底禁用 WordPress 的 XML-RPC 接口(2025 最新实践)

在 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 示例:

Apache
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

Nginx 示例:

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 已经是大多数站点的最佳实践。如果你还没处理,强烈建议尽早行动。