十年专注,只做WordPress定制开发一件事

如何在WordPress中禁用XML-RPC?

王超
2022-12-21
主题开发
1,280 次

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

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

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

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

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

什么是 xmlrpc.php 文件?

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

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

WordPress于2003年从b2博客软件分叉而来,该软件使用XML-RPC作为接口。名为 xmlrpc.php 的文件驻留在系统的根目录中,并包含此功能的代码。即使 XML-RPC 主要已过时,此文件仍然可用。

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

在WordPress版本3.5之前,WordPress移动应用程序只能在您的网站配置XML-RPC的情况下发布内容。这是由于该应用程序未运行WordPress引起的;相反,它使用xmlrpc.php与您的WordPress网站进行通信。

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

XML-RPC 可用于 pingback 和 Trackback。它还充当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)来执行此操作。

使用 Disable XML-RPC 插件禁用 XMLRPC

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

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

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

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

在这个插件中,你可以找到一个XML-RPC验证器,可以用来检查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-include 文件夹中有一个类文件,其中包含一个名为方法的属性。

方法属性包括可通过 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>

在 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 是有利的,以下是其中的一些情况:

  • 如果 REST API 不可用,因为您的旧网站由于任何原因无法更新到版本 4.4 或更高版本。
  • 程序无法访问您用于与其通信的网站上的 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。如果您希望提高网站的安全性,请按照上述步骤进行操作。

文章标签:

WordPress日记主要承接WordPress主题定制开发PSD转WordPressWordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494 微信:18539976310

搜索

嘿,有问题找我来帮您!