如何在 WordPress 中禁用 XML-RPC?

已发表: 2022-09-19

您是否搜索过 xmlrpc.php 文件以及如何在 WordPress 中禁用它? 本文将解释什么是 xmlrpc.php 以及如何禁用它。

通过标准化系统之间的通信方法,可以通过 XML-RPC 规范从 WordPress 环境之外的应用程序与 WordPress 进行通信。

自诞生之日起,该规范就对 WordPress 社区具有重要价值。 没有它,WordPress 就会与互联网的其他部分隔离开来。

但是,xmlrpc.php 也有一些缺点。 自 xmlrpc.php 文件漏洞被发现以来,WP REST API 已成为 WordPress 的重要组件。 这极大地增强了 WordPress 与其他软件程序的交互方式。

本文的目的是解释什么是 xmlrpc.php,为什么要禁用它,以及如何禁用它。

我们还建议您查看我们关于最佳 WordPress 安全插件的文章。

什么是 xmlrpc.php 文件?

本节的目的是回答什么是 XML-RPC PHP? XML-RPC 规范可用于在 WordPress 和其他系统之间进行通信。

使用 HTTP 作为传输协议和 XML 作为编码协议,XML-RPC 可以标准化这些通信中使用的协议。

WordPress 是在 2003 年从使用 XML-RPC 作为接口的 b2 博客软件分叉出来的。 名为 xmlrpc.php 的文件位于系统的根目录中,其中包含此功能的代码。 即使 XML-RPC 基本上已经过时,该文件仍然可用。

在早期版本的 WordPress 中,禁用 XML-RPC 是默认设置。 从 3.5 版开始,默认启用它以支持您的 WordPress 移动应用程序和您的 WordPress 安装之间的通信。

在 WordPress 3.5 版之前,只有在您的站点配置了 XML-RPC 时,WordPress 移动应用才能发布内容。 这是由于应用程序没有运行 WordPress 造成的; 相反,它使用 xmlrpc.php 与您的 WordPress 站点进行通信。

此外,XML-RPC 用于在 WordPress 和其他博客平台之间以及 WordPress 和 WordPress 移动应用程序之间进行通信。

XML-RPC 可用于 pingbacks 和 trackbacks。 它还充当 Jetpack 插件的后端,这使得自托管 WordPress 网站成为 WordPress.com 的成员成为可能。

因为 REST API 现在已经集成到 WordPress 核心中,所以我们不再使用 xmlrpc.php 文件。 您现在可以使用 REST API 与 WordPress 的移动应用程序、桌面客户端、Jetpack 插件以及其他系统和服务进行通信,而不是使用此文件。

也可以将REST API与更广泛的系统集成,其灵活性比xmlrpc.php更大。 由于 XML-RPC 已被 REST API 取代,您必须在您的网站上禁用 xmlrpc.php 以避免出现问题。

为什么要禁用 XML-RPC?

您应该知道 xmlrpc.php 文件可能会将您的 WordPress 站点的启用 XML-RPC 的漏洞暴露给黑客,因此您必须禁用它。

WordPress 之外的通信不再需要使用 XML-RPC。 如果您希望尽可能地保持您的网站安全,您应该禁用它。

正是出于这个原因,WordPress 将始终向后兼容。 如果您对它们负责,您应该不断更新与 WordPress 网站相关的 WordPress 插件和主题。

如果在您的网站上启用了 XML-RPC,黑客可以将其用作对您的网站发起 DDoS 攻击的工具。 他们可以使用 xmlrpc.php 模块为您的站点生成许多 pingback,这可能会使服务器超载并导致网站崩溃。

此外,xmlrpc.php 还会在每个请求中发送身份验证信息,因此黑客可能会拦截此信息并使用它来尝试访问您的网站。 这种蛮力攻击可以让黑客执行恶意代码、删除代码,甚至破坏您的数据库。

如何检查 XML-RPC 是否启用?

请点击以下链接访问网站:WordPress XML-RPC Validation Service。

输入域名后,单击“检查”按钮。

检查 xmlrpc 是否在 WordPress 上启用

如果测试成功,现在将启用 XML-RPC,应该立即将其关闭。

使用 WordPress 插件禁用 XMLRPC

由于各种原因,站点所有者可能希望禁用 XMLRPC 功能。 您可以使用各种插件来执行此操作,例如禁用 XML-RPC。

使用禁用 XML-RPC 插件禁用 XMLRPC

我们将解释如何使用禁用 XML-RPC 插件来禁用 XMLRPC 功能。 请登录您的 WordPress 管理面板。

1. 点击插件,然后添加新的。

2. 在搜索框中输入“禁用 XML-RPC”。 之后安装禁用 XML-RPC 插件。

在 WordPress 中安装新插件

3.激活插件,你就可以开始了。 然后,XML-RPC 被禁用。

安装禁用 CML-RPC 插件

在这个插件中,你可以找到一个 XML-RPC Validator,可以用来检查 XML-RPC 是否被禁用。 如果 XML-RPC 已被禁用,则会出现一条失败消息。 如果没有,您可以使用此插件禁用它。

使用插件配置 XML-RPC 和 REST API 激活

REST XML-RPC Data Checker 插件允许您以更细粒度的方式在您的网站上配置 REST API 和 xmlrpc.php。

安装并激活插件后,单击设置中的 REST XML-RPC 数据检查器选项卡后单击 XML-RPC 选项卡。

通过该插件,您可以准确指定在您的站点上启用了 xmlrpc.php 的哪些功能。 也可以完全禁用它。 如果您选择这样做,插件中还有一个选项卡允许您控制 REST API。

在没有插件的情况下禁用 XMLRPC

如果您不想向您的网站添加其他插件,您可以使用过滤器或 .htaccess 文件禁用 xmlrpc.php。 让我们一起考虑这两个选项。

通过过滤器禁用 xmlrpc.php

通过使用 xmlrpc_enabled 过滤器,很容易禁用 xmlrpc.php。 您应该添加此功能并使其在您的网站上处于活动状态:

 add_filter( 'xmlrpc_enabled', '__return_false' );

该功能可以添加到主题的功能文件中。 .htaccess 文件也可以使用 cPanel 或 FTP 进行编辑,具体取决于您是否使用 Apache 连接到托管服务提供商。

WordPress 的 __return_false 函数返回布尔假条件。 此过滤器仅阻止需要登录用户的操作。

它必须从所有方法中注销才能禁用 XMLRPC 服务器的所有操作。 为了实现这一点,您需要挂钩到 xmlrpc_methods 过滤器。

 add_filter( 'xmlrpc_methods', 'betterstudio_remove_xmlrpc_methods' ); function 'betterstudio_remove_xmlrpc_methods( $methods ) { $methods = array(); //empty the array return $methods; }

发出请求时,xmlrpc.php 文件创建 wp_xmlrpc_server 类的对象。 在 wp-includes 文件夹中有一个类文件,其中包含一个名为方法的属性。

methods 属性包括一组可通过 XML-RPC 请求访问的函数名称。

如果该函数未包含在此数组中,则返回该函数并显示错误消息。 因此,如果您清空数组,您可以放心,您将无法使用任何函数。

使用 .htaccess 禁用 XML-RPC

使用 .htaccess 禁用 XML-RPC 包括几个简单的步骤。 这是禁用 xmlrpc.php .htaccess 的方法:

  • 您可以使用 FTP 或文件管理器导航到您网站的根目录。
  • 您应该打开 .htaccess 文件。
  • 您需要将以下代码添加到您的 .htaccess 文件中:
 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all allow from xxx.xxx.xxx.xxx </Files>

xxx.xxx.xxx.xxx 可以替换为您希望授予对 xmlrpc.php 访问权限的 IP 地址。 如果您希望从 WordPress 中完全删除 xmlrpc.php,您可以删除此行。

在 Apache/Nginx 中禁用 XMLRPC

在 Apache/Nginx 中禁用 XMLRPC 也是一个简单的过程。 应将以下代码添加到 Apache 配置文件以禁用 xmlrpc.php:

 < VirtualHost > ---------- < files xmlrpc.php > order allow,deny deny from all < /files > < /VirtualHost >

使用 Nginx 配置文件中的以下代码,可以禁用 xmlrpc.php:

 server { ----------- location /xmlrpc.php { deny all; } }

如何在不同的 Linux 发行版中搜索和发现 XML-RPC 攻击?

如果您在不同的 Linux 发行版中搜索 XML-RPC 攻击,您可以使用以下命令来阻止 xmlrpc.php 攻击:

安装了 Apache 的 CentOS 服务器:
 # grep xmlrpc /var/logs/httpd/access.log
在 Ubuntu 上使用 Apache:
 # grep xmlrpc /var/logs/apache2/access.log
对于基于 Nginx 的服务器:
 # grep xmlrpc /var/logs/nginx/access.log
对于基于 cPanel 的服务器:
 # grep xmlrpc /home/username/logs/access.log

如果在受到攻击的 WordPress 站点上执行之前的命令,您将收到以下输出:

 POST /xmlrpc.php HTTP/1.0” 200 674 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)

何时启用 XML-RPC.php 文件

在某些情况下,启用 XML-RPC 是有利的,以下是其中的一些:

  • 如果您的旧网站因任何原因无法更新到 4.4 或更高版本时,REST API 不可用。
  • 程序无法访问您用来与其通信的网站上的 REST API。
  • 为了集成一些需要 XML-RPC 才能工作的第三方应用程序。

然而,应该注意的是,以上批评都不足以成为继续使用 XML-RPC 和 xmlrpc.php 漏洞利用的充分理由。

WordPress 拥有它的唯一原因是它向后兼容; 因此,如果您使用的是过时的 WordPress 版本,您将只想使用它。

对于那些希望保持其站点最新并支持最新软件版本的用户,应禁用 xmlrpc.php。

在 WordPress 中测试 XML-RPC 功能

此外,您可以使用 WordPress 测试选项来验证您的网站是否已成功禁止接收 XML-RPC 请求。

为此,您可以将 WordPress 移动应用程序下载到您的手机上。 此应用程序有 Android 和 iPhone 版本。 在您的设备上安装应用程序后,点击输入您现有的站点地址以开始使用它。

如果您在此站点上看到 XML-RPC 服务被禁用的错误消息,那么您就完成了。 这是 WordPress xmlrpc.php 403 禁止消息。

结论

XML-RPC 规范是在创建 WordPress 之前开发的,以允许与外部应用程序和系统进行通信。 本规范中存在几个安全漏洞,可能使您的网站容易受到攻击。

REST API 允许您的站点与其他程序进行通信,从而可以毫无顾虑地禁用 xmlrpc.php。 如果您希望提高网站的安全性,请按照上述步骤执行此操作。