WordPress 中 xmlrpc.php 的综合指南以及如何禁用它

已发表: 2024-03-27

Xmlrpc.php是一个突破性的解决方案。 它促进了与您的 WordPress 站点的远程通信。 这意味着您可以使用各种应用程序或服务远程管理您的网站。 想象一下从智能手机应用程序发布博客或将您的网站与其他 Web 应用程序集成 – 这就是 xmlrpc.php 带来的魔力。

就像任何敞开的技术之门一样,不受欢迎的访客很快就发现了它。 主要问题源于安全漏洞和暴力攻击,利用这种可访问性尝试闯入您的网站。 此外,对 xmlrpc.php 的过多请求可能会导致资源耗尽、减慢站点速度甚至导致停机。

问题的症状

xmlrpc.php 的问题并不是一刀切的。 根据您的托管环境、WordPress 配置以及攻击者针对您网站的方式,您可能会遇到各种症状:

  • 服务器资源使用量增加导致网站性能下降。
  • 暴露于暴力攻击的安全漏洞。
  • DDoS(分布式拒绝服务)攻击,利用 xmlrpc.php 淹没您的站点。
  • 对 xmlrpc.php 的连续 POST 请求在访问日志中可见。
  • 这些症状中的每一个都指向相同的根本原因,但根据攻击者的方法和站点的具体设置,其表现形式有所不同。

了解漏洞

尽管存在已知的漏洞,并且可以使用 WordPress REST API 等更好的替代方案,但 WordPress 中xmlrpc.php的存在是该平台致力于向后兼容性的典型示例。 这一承诺确保在旧版 WordPress 上运行的网站(依赖 XML-RPC 进行外部通信)能够继续运行而不会中断。 现在,让我们深入研究与xmlrpc.php相关的特定漏洞,并了解为什么它被视为安全风险。

暴力攻击

xmlrpc.php可被利用进行暴力攻击。 与尝试通过 wp-login.php 文件登录并且可以轻松检测和阻止的传统暴力攻击不同,通过xmlrpc.php的攻击可以使用 system.multicall 通过单个请求测试数百个密码组合。 这不仅使攻击更难以检测,而且对攻击者来说也更加有效。

xmlrpc.php处理请求时,它需要身份验证,传统上涉及在每个请求中发送用户名和密码。 这种方法虽然简单,但本质上是不安全的。

遭受暴力攻击

每个请求都附有用户名和密码组合,为黑客提供了尝试暴力攻击的机会。 他们可以自动向 xmlrpc.php 发出请求,循环遍历无数的用户名和密码组合,试图找到正确的组合。 如果他们成功,他们将获得对网站的未经授权的访问,从而可能允许他们插入恶意内容、删除关键代码或以其他方式损害网站的完整性。

重复的身份验证尝试

由于xmlrpc.php对每个请求进行身份验证,因此它提供了持续攻击的载体,而无需复杂的技术。 这种简单性使其成为想要进入 WordPress 网站的攻击者的有吸引力的目标。

REST API 如何增强安全性

WordPress REST API 代表了安全性方面的重大进步,特别是在身份验证方面。 REST API 可以使用 OAuth——一种更安全的访问委托标准,而不是依赖每个请求的用户名和密码组合。 OAuth 的工作原理是在用户批准访问后向应用程序颁发令牌。 然后,这些令牌用于身份验证,而不是传输敏感凭据。 即使攻击者拦截了令牌,这些令牌通常也是短暂的并且可以被撤销,从而最大限度地减少潜在的损害。

DDoS 攻击

还可以通过xmlrpc.php促进分布式拒绝服务 (DDoS) 攻击 攻击者可以使用 pingback 功能(用于通知其他站点有链接)向目标网站发送大量请求,使其不堪重负,并可能导致停机。

怎么运行的

由 xmlrpc.php 启用的 pingback 和 trackback 功能曾经是博客社区的基石。 它培育了一个相互关联的生态系统,博主和内容创作者可以在其中认可并链接到彼此的工作,从而创建一个互动网络。 然而,随着我们采用 WordPress REST API 过渡到更现代的网络,XML-RPC 的遗留功能(包括 pingback 和 Trackback)已经变得不再那么重要,不幸的是,它们成为网络攻击的潜在媒介。

pingbacks 和 trackbacks 如何成为一种负担

滥用机制:

Pingback 和 Trackback 本质上是为了在其他人链接到您的内容时通知您。 这是通过 xmlrpc.php 促进的自动握手实现的。 虽然此功能背后的目的是增强整个 WordPress 生态系统的连接性和参与度,但它无意中为恶意行为者打开了利用之门。

黑客可以使用这种机制发起分布式拒绝服务 (DDoS) 攻击。 通过利用 xmlrpc.php,他们可以从众多来源向您的站点发送大量 pingback 请求。 这不仅仅是少量的通知,而是洪水般的通知,能够淹没服务器的资源。 结果? 您的网站速度会慢得像爬行一样,或者在更糟糕的情况下,变得完全无法访问,从而实际上使您无法进行操作。

此类攻击的影响

对您网站的成功 DDoS 攻击会产生多方面的影响:

停机时间:最直接的影响是停机时间。访问者无法访问您的网站,这可能会损害您的声誉、用户体验,并可能损害您的收入。

资源消耗:您的托管资源因处理大量虚假 pingback 而被消耗,这可能会导致额外的托管成本。

搜索引擎排名:长时间的停机或网站性能缓慢会对您网站的 SEO 产生负面影响,可能会降低您在搜索结果中的排名。

安全妥协:虽然攻击本身可能不会窃取数据,但它给站点防御带来的压力可能会为其他漏洞被利用打开大门。

放大攻击

pingback 功能也可能在放大攻击中被滥用,其中发送到“xmlrpc.php”的小请求用于从服务器生成更大的响应。 这可能会放大针对目标的流量,从而加剧 DDoS 攻击的影响。

检查您的网站是否启用了 xmlrpc.php

确定xmlrpc.php是否处于活动状态并接受 WordPress 站点上的请求是增强站点安全性的重要步骤。由于仅在 WordPress 安装中包含该文件并不一定意味着它已启用或可访问,因此使用XML-RPC Validator Web App等工具可以提供清晰的见解。 让我们分解一下识别 xmlrpc.php 状态的步骤以及如何禁用它(如果它仍然处于活动状态)。

如何检查 xmlrpc.php 是否启用

使用 XML-RPC 验证器 Web 应用程序:

XML-RPC 验证器 Web 应用程序

  1. 导航到 XML-RPC 验证器 Web 应用程序。
  2. 输入您网站的网址。
  3. 运行测试。

验证器将尝试向您站点上的 xmlrpc.php 发出请求并分析响应。

如果测试得出 xmlrpc.php 已被禁用的结论,那么您就没事了。 但是,如果验证器指示 xmlrpc.php 处于活动状态,您将需要采取措施将其禁用。

该工具是测试 XML-RPC 功能的直接方法,无需亲自深入研究代码或服务器设置。

禁用 xmlrpc.php 的情况

虽然 xmlrpc.php 在过去发挥了关键作用,但 WordPress REST API 自此接过了接力棒,为外部应用程序与 WordPress 交互提供了一种更安全、更高效、更灵活的方式。 REST API 就像 xmlrpc.php 的升级版本 - 将其视为从翻盖手机到智能手机。

以下是值得考虑禁用 xmlrpc.php 的原因:

安全性:xmlrpc.php 因成为暴力攻击的目标而臭名昭著。禁用它会关闭攻击者可以用来危害您的网站的一种途径。

性能:不必要的 xmlrpc.php 调用会给您的服务器资源带来压力。如果您不使用它,将其关闭可以减轻服务器的负载。

现代解决方案:借助 WordPress REST API,您拥有一个现代、强大的替代方案,它涵盖了 xmlrpc.php 所做的所有基础,但以更安全、更高效的方式。

禁用 xmlrpc.php

在 WordPress 中禁用xmlrpc.php文件是至关重要的安全步骤。在这里,我们不仅将探索插件方法,还会为喜欢或需要更多实践解决方案的用户探索手动方法。

使用插件禁用 xmlrpc.php

安装插件(例如禁用 XML-RPC插件)是禁用xmlrpc.php最简单、最直接的方法 插件提供了一个用户友好的界面,需要最少的技术知识。 他们可以有效地禁用 XML-RPC 功能,而无需更改任何核心 WordPress 文件,从而降低破坏网站的风险。 对于不习惯编辑其网站的.htaccess文件或无权访问其网站的服务器文件的用户来说,此方法特别有利。

分步说明

在 WordPress 仪表板插件页面中禁用 XML-RPC 插件。

  1. 登录您的 WordPress 仪表板。
  2. 在仪表板的左侧边栏上,单击插件>添加新插件
  3. 在搜索栏中,输入禁用 XML-RPC ,然后按 Enter。 这将在搜索结果中显示该插件。
  4. 单击禁用 XML-RPC 插件旁边的立即安装。 WordPress 将下载并安装该插件。
  5. 安装后,单击激活按钮。 立即激活,无需进一步设置。

激活后,该插件会自动禁用xmlrpc.php ,以最小的努力增强站点的安全性。

有选择地禁用 xmlrpc.php 中的 pingback 功能

虽然完全禁用xmlrpc.php可以增强 WordPress 安全性,但它可能会限制某些依赖远程发布或xmlrpc.php提供的其他功能的用户的功能。 对于那些需要保留某些 XML-RPC 功能但想要禁用 pingback 功能(通常在 DDoS 攻击中利用)的用户来说,禁用 XML-RPC Pingback插件是一个理想的解决方案。这种方法提供了一种平衡的解决方案,可以在不牺牲功能的情况下增强安全性。

分步说明

  1. 首先登录您的 WordPress 网站的管理区域。
  2. 在仪表板的左侧菜单上,单击插件>添加新插件以访问插件存储库。
  3. 搜索禁用 XML-RPC Pingback 并按 Enter 键。
  4. 单击立即安装>激活以在您的站点上启用该插件。

激活后,该插件立即禁用xmlrpc.php的 pingback 功能 无需进一步配置。 其他 XML-RPC 功能保持完整并可运行,确保您可以继续享受远程发布和其他基于 XML-RPC 的功能的好处,而不会让您的站点面临与 pingback 相关的安全风险。

使用 REST XML-RPC 数据检查器进行细粒度控制

对于寻求全面控制xmlrpc.php功能和 REST API 的 WordPress 站点管理员来说, REST XML-RPC 数据检查器插件提供了先进的解决方案。 该插件不仅允许微调xmlrpc.php设置,还提供对REST API 的广泛控制,使其成为根据特定需求增强站点安全性和功能的不可或缺的工具。

分步说明

  1. 登录您的 WordPress 管理员帐户。
  2. 单击插件>添加新插件
  3. 搜索REST XML-RPC 数据检查器
  4. 单击立即安装>激活

配置 xmlrpc.php 和 REST API 设置

WordPress 中的 REST XML-RPC 数据检查器插件。

  1. 从 WordPress 仪表板,转到设置>REST XML-RPC 数据检查器这将带您进入插件的配置页面。
  2. 单击XML-RPC选项卡。 在这里,您将找到启用或禁用xmlrpc.php特定功能的选项 您可以根据需要选择禁用整个 XML-RPC 协议或选择其某些方面以保持活动状态。
  3. 切换到REST API选项卡以配置 REST API 的设置。 与 XML-RPC 设置类似,您可以启用或禁用特定端点或功能,从而对外部应用程序如何通过 REST API 与您的站点进行交互提供定制控制。

使用 xmlrpc_enabled 过滤器禁用 xmlrpc.php

建议在自定义插件中实现xmlrpc_enabled过滤器,而不是将自定义代码添加到主题的函数文件中。 此方法可确保无论主题更新或更改如何,更改仍然有效,从而提供更稳定可靠的方法来禁用xmlrpc.php 插件提供了一种模块化的方式来添加或删除功能,而不影响核心系统或主题文件,使其成为自定义 WordPress 开发的最佳实践。

分步说明

使用文本编辑器创建一个新的 PHP 文件。 您可以将此文件命名为任何名称,但为了清楚起见,使用像disable-xmlrpc.php这样的名称是合适的。

将以下代码粘贴到您的新文件中。 此代码片段包括一个标准插件标头,后跟禁用 XML-RPC 的过滤器:

 <?php

/**

* 插件名称:禁用 XML-RPC

* 描述:禁用 WordPress 上的 XML-RPC 功能。

* 版本:1.0

* 作者:你的名字

*/

add_filter( 'xmlrpc_enabled', '__return_false' );
  1. 通过 FTP 或主机的文件管理器连接到您的 WordPress 站点。
  2. 导航到/wp-content/plugins/目录并上传您的disable-xmlrpc.php文件。
  3. 登录 WordPress 仪表板,转到插件部分,您将看到列出的新创建的插件。
  4. 单击插件名称旁边的激活。

通过 .htaccess 文件手动禁用 xmlrpc.php

对于寻求更多控制权的用户或希望最大限度地减少网站上插件数量的用户,手动禁用xmlrpc.php是一个可行的选择。此方法涉及编辑.htaccess文件,该文件是 Apache Web 服务器使用的强大配置文件。 通过向此文件添加特定规则,您可以阻止对 xmlrpc.php 文件的访问,从而防止潜在的攻击者利用它。

在对 .htaccess 文件进行任何更改之前,创建备份至关重要。这可以确保在出现任何问题时可以快速恢复到原始状态。

分步说明

  1. 通过 FTP 客户端或虚拟主机的文件管理器连接到您的网站服务器。
  2. 导航到 WordPress 安装的根目录。
  3. 在根目录中,找到.htaccess文件。 该文件可能是隐藏的,因此请确保您的文件管理器设置为显示隐藏文件。
  4. 右键单击.htaccess文件并选择编辑选项。 如果使用 FTP 客户端,您可能需要下载文件以在本地进行编辑,然后在进行更改后重新上传。
  5. 在文件末尾,添加以下行以禁用xmlrpc.php
  6. <文件“xmlrpc.php”>
    
    要求全部拒绝
    
    </文件>
  7. 保存更改,如果在本地编辑,请将修改后的.htaccess文件上传回 WordPress 网站的根目录。

这种手动方法可以有效阻止对xmlrpc.php文件的访问,从而保护您的 WordPress 网站免受相关漏洞的影响。

与您的托管提供商交谈

某些托管服务认识到与 xmlrpc.php 相关的安全漏洞,可能会在受到威胁的情况下自动禁用对此文件的访问。 这种自动干预旨在保护服务器上托管的网站免遭暴力破解或通过 xmlrpc.php 发起的 DDoS 攻击。

当托管提供商禁用 xmlrpc.php 时,对此文件的任何请求都将导致403 Forbidden 错误此响应是服务器告诉客户端它理解该请求但拒绝授权的方式。 在安全方面,这是通过拒绝对目标资源的访问来阻止正在进行的攻击的有效方法。

在实施任何更改以禁用xmlrpc.php之前,明智的做法是咨询您的托管提供商。 他们可能已经采取了适当的安全措施或提供适合其托管环境的建议。 此外,了解托管提供商的政策和功能可以指导您选择最有效和最兼容的方法来保护您的站点。

何时在 WordPress 网站上启用 xmlrpc.php

虽然出于安全考虑,对现代 WordPress 网站的一般建议是禁用xmlrpc.php ,但在某些特定情况下启用它可能是必要的或唯一可用的选项。

缺乏 REST API 使用

您的 WordPress 站点不使用 REST API,但需要与其他系统或应用程序进行通信。 这可能是由于那些仅与 XML-RPC 兼容的系统或应用程序的特定要求所致。

在这种情况下,xmlrpc.php充当远程通信的桥梁,支持远程发布或与外部内容管理工具集成等功能。

无法更新 WordPress

您运行的 WordPress 版本早于 4.4,该版本不包含 REST API 功能。 这可能是由于您的托管环境施加的限制或与当前主题或插件不兼容。

如果由于这些限制而无法更新 WordPress,则 xmlrpc.php 仍然是远程交互的关键组件。 但是,建议解决根本原因 - 无论是更改托管提供商还是更新不兼容的主题或插件 - 以保护您的网站并使其现代化。

外部应用程序兼容性

您的站点需要使用不支持 WP REST API 但与 XML-RPC 兼容的外部应用程序。 这种情况越来越罕见,但可能会发生在遗留系统或专用软件中。

虽然暂时依赖xmlrpc.php进行此类集成,但规划长期迁移到 REST API 兼容应用程序至关重要。这可确保您的网站面向未来并保持与最新网络标准和安全实践的兼容性。

尖端

  • 过渡到 REST API 进行远程通信和集成可提供更大的灵活性、安全性以及与当代 Web 生态系统的兼容性。
  • 优先保持 WordPress 以及所有相关主题和插件最新。 这不仅确保了对最新功能和安全性改进的访问,而且还减少了对 XML-RPC 等遗留解决方案的需求。
  • 如果您遇到需要使用xmlrpc.php的情况,咨询 Web 开发和安全专业人员可以提供替代方案或减轻潜在风险。

结束语

在我们的博客中,我们了解了 xmlrpc.php 是什么以及网站所有者和黑客如何使用它。 我们还介绍了出于安全原因在 WordPress 中禁用 xmlrpc.php 的重要性,同时还认识到可能需要使用它的例外情况。 我们深入研究了通过插件、自定义代码和 .htaccess 修改来停用的方法,强调了托管提供商的作用。 此外,我们承认由于遗留系统或缺乏 REST API 支持而需要 xmlrpc.php 的场景。 总体建议倾向于禁用 xmlrpc.php 以增强安全性,提倡更新并通过 REST API 采用现代集成方法。

利用 AI 加速您的 WordPress 网站创建

使用 10Web AI Website Builder,创建适合您业务需求的自定义 WordPress 网站,速度提高 10 倍。

生成您的网站
无需信用卡