15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
01.11.2024

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 来管理文章、页面和评论。
  • 引用通告和反向链接——该协议处理网站间通知,在你链接到其他博客的内容时提醒它们。
  • 第三方集成——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. 通过反向链接进行 DDoS 放大

攻击者可以利用 xmlrpc.php 中的反向链接功能,将你的 WordPress 网站变成 分布式拒绝服务 (DDoS) 攻击中的无意参与者。通过发送精心制作的反向链接请求,恶意行为者可以指示你的服务器向目标 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✅ 是——旧版客户端
引用通告 / 反向链接❌ 否——可以单独禁用

对于绝大多数 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 文件在 网络服务器级别 阻止请求——在 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 (过滤器钩子)

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

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

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

应用你选择的方法后,确认它有效:

  1. 浏览器测试: 访问 https://yourdomain.com/xmlrpc.php。成功的阻止显示 403 禁止404 未找到 错误。
  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 网站吗?

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

Jetpack 需要 xmlrpc.php 吗?

较早版本的 Jetpack 依赖 XML-RPC。现代 Jetpack 版本主要使用 WordPress.com REST API。在禁用 XML-RPC 之前,检查你的特定 Jetpack 版本的文档。

我可以只禁用反向链接而不是所有 XML-RPC 吗?

可以。如果你想保

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用