xmlrpc.php
是 WordPress 的一个核心文件,主要用于远程通信。
XML-RPC 是 WordPress 的一项功能,它通过 HTTP 作为传输机制,XML 作为编码机制,实现数据传输。由于 WordPress 不是一个封闭系统,偶尔需要与其他系统通信,因此使用了 XML-RPC 来处理这项工作。
xmlrpc.php 启用的核心功能包括:通过智能手机连接你的网站、实现其他网站的 trackback 和 pingback,以及与 Jetpack 插件相关的一些功能。
比如说你想通过移动设备向你的 WordPress 网站发布文章,就可以利用 xmlrpc.php 启用的远程访问功能来实现这一点。

一、为什么创建了 xmlrpc.php,它是如何被使用的?
XML-RPC 的使用可以追溯到 WordPress 诞生之前的早期阶段,当时它甚至还不叫 WordPress。
在互联网早期,网络连接速度非常慢,在线撰写和发布内容既困难又耗时。为了解决这个问题,当时的做法是开发一个离线博客客户端,用户可以先在本地撰写内容,然后再连接到博客进行发布。这种远程连接就是通过 XML-RPC 协议实现的。
最初,XML-RPC 功能在 WordPress 中是默认禁用的,直到 WordPress 2.6 添加了一个控制面板选项,允许用户手动启用或禁用它。随后,在 WordPress 3.5 中,随着 WordPress 手机 App 的推出,XML-RPC 被默认启用,同时控制面板中启用/禁用该功能的选项也被移除。
历史背景
1. 起源(2003年之前)
xmlrpc.php
的使用可以追溯到 WordPress 的前身 b2/cafelog,当时博客系统刚兴起,需要一种方式支持远程发布文章。
2. WordPress 早期(2003~2010)
- WordPress 最初版本(2003)就包含了
xmlrpc.php
文件。 - 使用 XML-RPC 协议(基于 XML 的远程过程调用协议),允许客户端通过 HTTP 与网站进行通信。
3. 发展期(2010~2015)
xmlrpc.php
逐步支持更多功能,如:- 发布、编辑、删除文章
- 上传图片
- 管理评论
- 获取博客内容信息
- 一些流行的移动客户端(如 WordPress 官方 App)依赖该文件来远程操作网站。
4. REST API 出现后(2016至今)
- 从 WordPress 4.7 开始,REST API 成为官方核心功能,提供更现代化、灵活的替代方案。
xmlrpc.php
仍保留以支持旧客户端和第三方工具(如 Windows Live Writer)。
二、XML-RPC的现状及xmlrpc.php 的主要作用
2015 年,WordPress 核心引入了新的 REST API,用于与移动应用程序及其他平台进行交互。许多开发者开始转向使用 REST API,这实际上取代了 XML-RPC 的功能。
然而,XML-RPC 目前在 WordPress 中仍然是启用状态,xmlrpc.php
文件依然存在于核心程序目录中。
二、xmlrpc.php 的主要作用
功能类别 | 具体说明 |
---|---|
远程发布 | 允许使用第三方工具(如 Open Live Writer、WordPress App)远程发布文章。 |
内容管理 | 创建、编辑、删除文章、页面,管理分类、标签等内容。 |
媒体上传 | 支持远程上传图片和其他媒体文件。 |
评论管理 | 审核、删除、添加评论。 |
用户认证 | 提供用户名和密码验证机制。 |
Pingback/Trackback | 支持博客之间的内容引用通知。 |
三、为什么你应该禁用 xmlrpc.php ?
XML-RPC 的最大问题在于安全隐患。问题本身不在于 XML-RPC 技术,而是 xmlrpc.php
文件容易被滥用,成为网络攻击的入口。
安全风险一:暴力破解攻击(Brute-force)
攻击者可以利用 xmlrpc.php
文件,发送批量认证请求,尝试不同的用户名和密码组合登录你的网站。他们可以用一个请求就测试数百个密码组合,从而绕过许多传统的防暴力破解防护工具。
安全风险二:DDoS 放大攻击
黑客会滥用 WordPress 的 pingback 功能,通过 xmlrpc.php
向成千上万的网站发送请求。将网站变为攻击第三方网站的“跳板”。这会造成你的网站被用于分布式拒绝服务攻击(DDoS),占用资源甚至导致网站宕机。
由于 xmlrpc.php
可用于远程操作,曾多次成为攻击目标,常见问题包括:
安全风险三:信息泄露或滥用
插件或主题配置不当时,可能被黑客用作远程控制入口。
四、专业建议 – 最好的做法是直接禁用 xmlrpc.php
除了设置强密码和使用安全插件外,最好的做法是直接禁用 xmlrpc.php
,以彻底封堵这一攻击通道。
你可以使用名为 XML-RPC Validator 的工具检查网站是否启用了 XML-RPC:
- 显示 error:说明未启用
- 显示 success:建议立即禁用
如何在 WordPress 中禁用 xmlrpc.php
方法一:使用插件(简单快捷)
- 登录 WordPress 后台,进入 插件 → 安装插件
- 搜索插件 Disable XML-RPC-API
- 安装并启用后,插件会自动禁用 XML-RPC 功能
注意:某些旧插件可能依赖 XML-RPC,因此全面禁用可能导致部分功能异常。
方法二:手动通过 .htaccess
文件禁用(推荐做法)
- 登录主机面板或 FTP,找到网站根目录下的
.htaccess
文件(可能需要启用“显示隐藏文件”) - 在文件末尾添加以下代码:
# 阻止所有对 xmlrpc.php 的请求
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
📌 提示:
- 将
xxx.xxx.xxx.xxx
替换为你要允许访问的 IP(如不需要允许任何 IP,可删除该行) - 这段代码会彻底拦截所有对
xmlrpc.php
的请求,在它们到达 WordPress 之前就被拒绝
五、现代替代方案
虽然 XML-RPC 曾是 WordPress 的重要远程发布工具,但由于它存在严重的安全风险,如暴力破解和 DDoS 放大攻击,如今已被 REST API 所取代。提供更强大、灵活的 JSON 格式 API,适用于前端开发、移动端、JS 应用等。
为了网站的长期安全,强烈建议你通过插件或手动方式彻底禁用 xmlrpc.php
文件。
六、禁用XML-RPC WordPress插件清单
以下是一些常用的 禁用 WordPress XML-RPC 功能的插件清单,这些插件可以提升网站安全性、阻止暴力破解攻击或 DDoS 利用 xmlrpc.php
的方式:
🔒 常见 Disable XML-RPC 插件推荐清单:
1. Disable XML-RPC
- 作者:Philip Erb
- 功能:完全禁用
xmlrpc.php
文件的访问。 - 使用场景:最小化配置,纯粹关闭 XML-RPC 功能。
- 链接:https://wordpress.org/plugins/disable-xml-rpc/
2. Disable XML-RPC Pingback
- 作者:Samuel Aguilera
- 功能:只禁用
pingback.ping
方法,允许其它 XML-RPC 方法(如 WordPress App 功能)。 - 使用场景:需要远程发布但防止 DDoS 放大攻击。
- 链接:https://wordpress.org/plugins/disable-xml-rpc-pingback/
3. Stop XML-RPC Attack
- 作者:Hexasoft Development
- 功能:阻止攻击者通过
xmlrpc.php
暴力破解密码或发送批量请求。 - 使用场景:增强登录安全性,防止资源耗尽攻击。
- 链接:https://wordpress.org/plugins/stop-xmlrpc-attack/
4. Security Plugins with XML-RPC Controls(综合安全插件)
这些插件虽然主要功能是网站整体安全防护,但也包含禁用 XML-RPC 的选项:
- ✅ Wordfence Security
- 强大的防火墙和安全功能,可禁用 XML-RPC。
- https://wordpress.org/plugins/wordfence/
- ✅ iThemes Security
- 提供图形化界面控制 XML-RPC 功能开关。
- https://wordpress.org/plugins/better-wp-security/
🛠 插件选择建议:
使用场景 | 推荐插件 |
---|---|
完全禁用 XML-RPC(最安全) | Disable XML-RPC |
只禁用 Pingback,保留远程发布 | Disable XML-RPC Pingback |
想提升整体安全性 | Wordfence / iThemes Security |
面临暴力破解攻击 | Stop XML-RPC Attack |
七、如何不利用插件就能禁用 XML-RPC ?
好的,下面是两种不依赖插件的方法来禁用 WordPress 的 xmlrpc.php
,你可以选择使用 .htaccess
配置 或 添加到主题 functions.php 的代码,根据你的需求选择一种即可。
方法一:使用 .htaccess
禁用 XML-RPC(推荐)
适用于:使用 Apache 服务器
编辑你网站根目录下的 .htaccess
文件,在其中加入以下代码段:
# 禁用对 xmlrpc.php 的所有访问请求
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
如果你使用的是 Apache 2.4 及以上版本,使用这一版本更兼容:
<Files "xmlrpc.php">
Require all denied
</Files>
说明:这会彻底阻止外部对 xmlrpc.php
的访问(包括 WordPress App 远程发布功能)。
方法二:通过 functions.php
禁用 XML-RPC(适用于所有服务器)
适用于:不想动服务器配置,或使用 Nginx
将以下代码添加到你当前主题的 functions.php
文件末尾:
// 完全禁用 XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
或者(推荐)更进一步,防止 pingback 功能被利用:
// 禁用 pingback.ping 方法,防止 DDoS 放大攻击
function remove_xmlrpc_pingback($methods) {
unset($methods['pingback.ping']);
return $methods;
}
add_filter('xmlrpc_methods', 'remove_xmlrpc_pingback');
// 完全禁用 XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
说明:
xmlrpc_enabled
钩子会让 WordPress 返回 XML-RPC 不可用状态。- 上面的方法不会直接屏蔽文件访问,但能禁用 XML-RPC 的处理逻辑,对攻击者等同于“无效”。