所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
安全 管理

WordPress中的xmlrpc.php是什么以及如何禁用它(完整2024指南)

WordPress 为互联网上超过 43% 的网站提供支持——随之而来的是一个巨大的攻击面。最常被利用的入口点之一是一个名为 xmlrpc.php 的文件。无论你是经验丰富的开发者还是管理第一个 WordPress 安装的网站所有者,了解这个文件的作用、它为什么危险以及如何禁用它对保护你的网站安全至关重要。

本指南涵盖了你需要了解的关于 xmlrpc.php 的所有内容:它的用途、它引入的真实威胁,以及三种经过验证的禁用方法——无需技术学位。

WordPress 中的 xmlrpc.php 是什么?

xmlrpc.php 是一个核心 WordPress 文件,实现了 XML-RPC 协议 — 一个使用 XML 编码调用和 HTTP 作为传输机制的远程过程调用 (RPC) 系统。简单来说,它允许外部应用程序和服务与您的 WordPress 网站通信,而无需使用标准的网络浏览器界面。

在 WordPress REST API 出现之前很久就推出了,xmlrpc.php 是 WordPress 与外部世界之间的主要桥梁。它支持:

  • 远程内容发布 — 博客客户端(如 Windows Live Writer 或 MarsEdit)可以直接向您的网站发布文章。
  • 移动应用管理 — 官方 WordPress 移动应用历来依靠 XML-RPC 来管理文章、页面和评论。
  • 引用通告和 pingback — 该协议处理网站间通知,在您链接到其他博客的内容时向其发出警报。
  • 第三方集成 — IFTTT、Zapier(在较早的配置中)和各种插件等服务使用 XML-RPC 与 WordPress 进行程序化交互。

虽然这些功能在 2010 年代初期确实很有用,但 WordPress 后来推出了 REST API,它提供了一种更安全、更现代、更灵活的方式来实现相同的结果。因此,xmlrpc.php 现在基本上已经过时 — 但它在每个 WordPress 安装中仍然默认处于活动状态。

为什么 xmlrpc.php 是安全风险?

xmlrpc.php 的问题不在于协议本身——而在于即使您不使用该文件,它仍然保持启用状态,从而创建了一个不必要的攻击向量。安全研究人员和托管提供商一致将其列为 WordPress 最严重的漏洞之一。原因如下:

1. 暴力破解放大攻击

这是最危险且被广泛利用的威胁。针对 WordPress 登录页面 (wp-login.php) 的标准暴力破解攻击仅限于每个 HTTP 请求一次凭证尝试。XML-RPC 改变了这一点。

XML-RPC 中的 system.multicall 方法允许攻击者将数百甚至数千个用户名/密码组合捆绑到单个 HTTP 请求中。这意味着:

  • 传统的速率限制和登录尝试插件被绕过。
  • 攻击者可以用最少的带宽测试大量凭证列表。
  • 服务器日志显示的请求数量少得多,使检测更加困难。

使用此技术,单个僵尸网络可以在几分钟内破坏密码较弱的 WordPress 网站。

2. 通过 Pingback 进行 DDoS 放大

攻击者可以利用 xmlrpc.php 中的 pingback 功能,将您的 WordPress 网站变成分布式拒绝服务 (DDoS) 攻击的无意参与者。通过发送精心制作的 pingback 请求,恶意行为者可以指示您的服务器向目标 URL 发送 HTTP 请求——有效地利用您的服务器资源和 IP 声誉来对抗第三方。

这不仅会伤害攻击目标,还可能导致您的服务器 IP 被列入黑名单,影响您网站的可交付性和声誉。

3. 服务器资源耗尽

即使没有协调的攻击,xmlrpc.php 也是自动扫描机器人的常见目标,这些机器人会探测漏洞。这些持续的探测会消耗 CPU 周期、内存和带宽——这些资源本应用于为您的合法访问者提供服务。特别是在共享托管环境中,这可能会明显降低网站性能。

4. 不必要的暴露

如果您不使用远程发布工具、需要 XML-RPC 的移动应用程序或旧版第三方集成,那么 xmlrpc.php 为您的网站提供零好处,同时保持完全活跃的攻击面。安全中的最小权限原则规定:如果您不需要它,请禁用它。

你真的需要 xmlrpc.php 吗?

在禁用它之前,问问自己:

用例仍需要 XML-RPC?
WordPress 移动应用(现代)❌ 否 — 使用 REST API
Jetpack 插件⚠️ 部分 — 检查 Jetpack 文档
WooCommerce❌ 否
IFTTT / Zapier 集成❌ 否 — 使用 REST API 或 webhooks
Windows Live Writer / MarsEdit✅ 是 — 旧版客户端
Pingbacks / Trackbacks❌ 否 — 可单独禁用

对于绝大多数 WordPress 网站所有者来说,答案是:你不需要它。禁用它。

如何在WordPress中禁用xmlrpc.php:3种方法

有三种可靠的方法来禁用xmlrpc.php,从初学者友好到服务器级别。选择最适合您的技术舒适度和托管环境的方法。

方法1:使用WordPress安全插件(最简单)

如果您想要一个无代码解决方案,风险最小,安全插件是您的最佳起点。

推荐插件:

  • Wordfence Security — 综合防火墙和恶意软件扫描器,具有XML-RPC阻止功能。
  • iThemes Security(现为Solid Security) — 专用切换以禁用XML-RPC。
  • Disable XML-RPC — 一个轻量级的单一用途插件,完全按其名称工作。

分步说明:

  1. 登录您的WordPress管理仪表板
  2. 导航到插件 → 添加新插件
  3. 搜索您选择的插件(例如”Disable XML-RPC”)并点击立即安装,然后激活
  4. 进入插件的设置页面。对于Wordfence或iThemes Security等专用安全插件,查找标记为XML-RPCWordPress调整的部分。
  5. 启用禁用XML-RPC阻止XML-RPC请求选项。
  6. 保存您的更改。

优点:简单、可逆、无需编辑文件。

缺点:增加插件依赖;文件仍然存在于服务器上(请求在应用程序级别被阻止,而不是服务器级别)。

方法2:通过.htaccess阻止xmlrpc.php(推荐用于Apache服务器)

对于基于Apache的托管环境,编辑.htaccess文件在Web服务器级别阻止请求——在WordPress甚至加载之前。这比单独使用插件更高效,提供更强的保护。

分步说明:

  1. 通过FTP(使用FileZilla或类似工具)或通过您的托管控制面板的文件管理器访问您的站点文件
  2. 导航到您的WordPress根目录——这通常是public_htmlwww
  3. 找到.htaccess文件。如果您看不到它,请在FTP客户端中启用隐藏文件(在FileZilla中:服务器 → 强制显示隐藏文件)或在文件管理器的设置中启用。
  4. 打开.htaccess进行编辑并在文件末尾添加以下块:
# Block WordPress xmlrpc.php
<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>
  1. 保存文件并关闭编辑器。

要验证它是否正常工作,请在浏览器中访问https://yourdomain.com/xmlrpc.php。您应该收到403禁止错误,而不是默认的XML-RPC响应。

优点:服务器级别阻止更高效;减少服务器负载;无需插件。

缺点:需要文件访问权限;不正确的.htaccess编辑可能会暂时破坏您的站点(始终保持备份)。

> 专业提示:如果您的托管使用Nginx而不是Apache,请改为将以下内容添加到您的Nginx服务器块配置中:

>

> “`nginx

> location = /xmlrpc.php {

> deny all;

> access_log off;

> log_not_found off;

> }

> “`

方法3:通过functions.php禁用(WordPress过滤器钩子)

此方法使用WordPress过滤器从主题或自定义插件中以编程方式禁用XML-RPC功能。这是一个在WordPress应用程序层工作的干净的基于代码的解决方案。

分步说明:

选项A——通过主题编辑器(快速但不推荐用于生产环境):

  1. 在您的WordPress仪表板中,转到外观 → 主题编辑器
  2. 从右侧的文件列表中选择functions.php
  3. 在文件末尾添加以下代码:
// Disable XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );
  1. 点击更新文件以保存。

选项B——通过自定义插件(推荐):

与其编辑您的主题的functions.php(在主题更新时会被覆盖),不如创建一个简单的自定义插件:

  1. 使用FTP或文件管理器,导航到wp-content/plugins/
  2. 创建一个名为disable-xmlrpc的新文件夹。
  3. 在该文件夹内,创建一个名为disable-xmlrpc.php的文件,内容如下:
<?php
/**
 * Plugin Name: Disable XML-RPC
 * Description: Disables XML-RPC functionality for improved security.
 * Version: 1.0
 * Author: Your Name
 */

add_filter( 'xmlrpc_enabled', '__return_false' );
  1. 在您的仪表板中转到插件 → 已安装的插件并激活禁用XML-RPC

优点:干净、独立于主题(使用自定义插件方法时);易于撤销。

缺点:仅应用程序级别——文件仍然存在并可以接收请求(尽管它们会被拒绝);不如.htaccess阻止那样有效地减少服务器负载。

结合方法以获得最大安全性

为了获得最强的保护,将方法 2 (.htaccess) 与方法 3 (filter hook) 结合

  • .htaccess 规则在服务器级别阻止请求,减少负载。
  • filter hook 确保即使 .htaccess 规则被绕过或覆盖,XML-RPC 也会被禁用。

这种分层方法遵循 深度防御 的安全原则 — 多个独立控制保护同一资产。

如何验证 xmlrpc.php 已成功禁用

应用您选择的方法后,确认其有效:

  1. 浏览器测试:访问 https://yourdomain.com/xmlrpc.php。成功阻止会显示 403 Forbidden404 Not Found 错误。
  2. 在线 XML-RPC 检查器:使用 xmlrpc.eritreo.it 等工具来测试您网站的 XML-RPC 端点是否响应。
  3. 服务器日志:检查您的访问日志中是否有任何对 xmlrpc.php 的剩余请求 — 请求数量的突然下降确认阻止正在工作。

为WordPress安全选择合适的托管

禁用xmlrpc.php只是WordPress安全的一个层面。安全WordPress网站的基础始于选择合适的托管提供商——一个提供服务器级安全控制、定期备份和能够抵御攻击的基础设施的提供商。

AlexHost,WordPress安全已内置于托管堆栈中。无论您运行的是个人博客还是高流量商业网站,合适的计划都会产生重大影响:

  • VPS托管 — 完整的root访问权限让您可以实现服务器级安全配置,包括自定义Nginx或Apache规则以在基础设施级别阻止xmlrpc.php。适合需要精细控制的开发人员和成长中的网站。
  • 共享虚拟主机 — 为WordPress网站提供经济高效的入门选择,具有托管安全配置和通过控制面板轻松访问.htaccess编辑的功能。
  • 带cPanel的VPS — 结合了虚拟专用服务器的强大功能与熟悉的cPanel界面,使管理.htaccess文件、SSL证书和安全设置变得直观,无需命令行专业知识。
  • SSL证书 — 使用HTTPS加密您的网站是不可协商的安全基线。SSL证书确保即使发出XML-RPC请求,传输中的凭证和数据也是加密的。
  • 域名注册 — 将您的域名和托管保持在一个屋檐下,以简化DNS管理并减少来自第三方注册商漏洞的攻击面。

将强大的托管基础设施与应用级强化(如禁用xmlrpc.php)相结合,可为您的WordPress网站提供强大的多层安全态势。

常见问题

禁用 xmlrpc.php 会破坏我的 WordPress 网站吗?

对大多数用户来说,不会。如果您不使用旧版桌面博客客户端、官方 WordPress 应用(现代版本使用 REST API)或明确需要 XML-RPC 的特定第三方集成,禁用它不会对功能产生明显影响。

Jetpack 需要 xmlrpc.php 吗?

Jetpack 的旧版本依赖于 XML-RPC。现代 Jetpack 版本主要使用 WordPress.com REST API。在禁用 XML-RPC 之前,请查看您的特定 Jetpack 版本的文档。

我可以只禁用 pingback 而不是所有 XML-RPC 吗?

可以。如果您想保持 XML-RPC 活跃以用于其他目的,但消除 pingback 滥用,请将以下内容添加到您的 functions.php

// Disable pingbacks only
add_filter( 'xmlrpc_methods', function( $methods ) {
    unset( $methods['pingback.ping'] );
    return $methods;
} );

xmlrpc.php 在较新版本的 WordPress 中被删除了吗?

没有。截至最新的 WordPress 版本,xmlrpc.php 仍然包含在内并默认启用。WordPress 核心团队已讨论过其未来,但出于向后兼容性考虑,它仍然存在。

结论

xmlrpc.php 是一个遗留的 WordPress 文件,曾经服务于合法目的,但如今代表了全球 WordPress 安装中最常被利用的漏洞之一。除非您有特定的、有文档记录的 XML-RPC 功能需求,否则禁用它是一个简单、高效的安全改进,实施时间不到五分钟

回顾您的选项:

方法难度保护级别推荐用于
安全插件⭐ 简单应用层初学者
.htaccess 阻止⭐⭐ 中等服务器层大多数用户
functions.php 过滤器⭐⭐ 中等应用层开发者
组合(.htaccess + 过滤器)⭐⭐ 中等最大生产网站

应用适合您环境的方法,验证阻止是否有效,并将其与坚实的托管基础相结合。安全不是单一行动——它是一个持续的实践。保持您的 WordPress 核心、主题和插件更新,定期监控您的访问日志,并选择从根本上支持您安全目标的托管基础设施。