WordPress中xmlrpc.php文件意思、作用、风险和禁用【深度好文】
开发XML-RPC WordPress规范是为了标准化不同系统之间的通信,这意味着WordPress外部的应用程序(例如其他博客平台和桌面客户端)可以与WordPress进行交互。
自WordPress诞生以来,该规范一直是WordPress的一部分,并且做得非常有用。没有它,WordPress将会处于自己的孤岛,与互联网的其余部分分离。
但是,xmlrpc.php有其缺点。它可以向您的WordPress网站引入漏洞,现已被WordPress REST API取代,该API在将WordPress开放给其他应用程序方面做得更好。
在本文中,我们将解释xmlrpc.php是什么,为什么要禁用它,并帮助您确定它是否正在WordPress网站上运行。
本文涉及的内容包括:
什么是xmlrpc.php?
XML-RPC是支持WordPress与其他系统之间通信的规范。它通过使用HTTP作为传输机制和XML作为编码机制来标准化这些通信来实现此目的。
XML-RPC早于WordPress:它出现在b2博客软件中,该软件于2003年创建了WordPress。该系统的代码存储在站点根目录下的xmlrpc.php文件中。即使XML-RPC在很大程度上已经过时,它仍然存在。
在WordPress的早期版本中,默认情况下已关闭XML-RPC。但是从3.5版开始,默认情况下已启用它。这样做的主要原因是允许WordPress移动应用程序与您的WordPress安装进行对话。
如果您在3.5版之前使用WordPress移动应用程序,您可能会记得必须在站点上启用XML-RPC才能使该应用程序能够发布内容。这是因为该应用程序本身未运行WordPress。相反,它是一个单独的应用程序,使用xmlrpc.php与您的WordPress网站进行通信。
但是XML-RPC不仅用于移动应用程序:它还用于允许WordPress和其他博客平台之间进行通信,还支持引用和pingback,并为Jetpack插件提供了动力,该插件链接了一个自托管的WordPress WordPress.com网站。
但是由于REST API已集成到WordPress核心中,因此xmlrpc.php文件不再用于此通信。相反,REST API用于与WordPress移动应用程序,桌面客户端,其他博客平台,WordPress.com(用于Jetpack插件)以及其他系统和服务进行通信。REST API功能更强,使用更灵活。
由于REST API取代了XML-RPC,因此您现在应该在站点上禁用xmlrpc.php。让我们看看为什么。
为什么要禁用xmlrpc.php
您应该在WordPress网站上禁用xmlrpc.php的主要原因是因为它引入了安全漏洞, 并且可能成为攻击的目标。
既然不再需要XML-RPC在WordPress之外进行通信,就没有理由保持它的活动状态。这就是为什么通过禁用站点来提高其安全性是明智的。
如果xmlrpc.php属于安全责任,并且不再起作用,那么为什么不将其完全从WordPress中删除呢?
这是因为WordPress的主要功能之一始终是向后兼容。如果您对网站进行了良好的管理,您将知道保持WordPress最新以及任何插件或主题是必不可少的。
但是总会有不愿或无法更新其WordPress版本的网站所有者。如果他们运行的版本早于REST API,则他们仍然需要访问xmlrpc.php。
通过XML-RPC Pingbacks进行DDoS攻击
xmlrpc.php启用的功能之一是pingback和Trackbacks。当另一个博客或网站链接到您的内容时,这些通知将显示在您网站的评论中。
XML-RPC规范使这种通信成为可能,但已被REST API取代(如我们所见)。
如果您的站点上启用了XML-RPC,则黑客可能会利用xmlrpc.php在短时间内向您的站点发送大量pingback,从而在您的站点上发起DDoS攻击。这可能会使服务器超载,并使站点无法正常运行。
通过XML-RPC的蛮力攻击
每次xmlrpc.php发出请求时,它都会发送用户名和密码进行身份验证。这带来了重大的安全责任,而REST API却没有做到这一点。实际上,REST API使用OAuth来发送用于身份验证的令牌,而不是用户名或密码。
因为xmlrpc.php随每个请求发送身份验证信息,所以黑客可以使用它来尝试访问您的站点。这样的暴力攻击可能使他们可以插入内容,删除代码或破坏数据库。
如果攻击者向您的站点发送了足够多的请求,每个请求使用不同的用户名和密码对,则它们最终有可能会被攻击到正确的请求,从而使他们可以访问您的站点。
因此,如果您正在运行WordPress的最新版本(使用REST API与外部系统进行通信),则应禁用xmlrpc.php。
xmlrpc.php是否在您的WordPress网站上运行?
您需要做的第一件事是确定xmlrpc.php是否正在您的WordPress网站上运行。
这不是检查文件是否存在的简单情况:它是每个WordPress安装的一部分,即使禁用了XML-RPC,它也将存在。
删除任何内容之前,请务必备份您的网站。在这种情况下,不要仅仅删除xmlrpc.php文件,因为它会破坏您的站点。
要检查您的站点上是否启用了xmlrpc.php,请使用WordPress XML-RPC验证服务。这将检查您的站点并告诉您是否启用了xmlrpc.php。
这是我在服务上检查此站点时得到的结果。
这表明xmlrpc.php在www.dianjin123.com已被禁用。但是,如果您运行检查并发现xmlrpc.php仍在您的站点上启用,如何关闭它?
如何禁用xmlrpc.php
有三种禁用xmlrpc.php的方法:
让我们分别看看每个。
如何使用插件禁用xmlrpc.php
安装插件是禁用xmlrpc.php是最简单的方法。插件地址https://wordpress.org/plugins/disable-xml-rpc/。使用方法如下。
这个插件使用非常简单,简单的无需说明,只需要启用插件就可以。
如何无插件禁用xmlrpc.php
1、把下面的代码
add_filter( 'xmlrpc_enabled', '__return_false' );
放到functions.php文件中。
2、通过.htacess文件禁用xmlrpc.php
在您的.htaccess文件中,添加以下代码:
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
为避免遇到任何问题,请确保在此之前先备份旧文件。
让您的托管服务提供商禁用xmlrpc.php
可以在服务器配置文件Nginx.config中,添加:
location ~* ^/xmlrpc.php$ {
return 403;
}
这将产生403错误。
根据自己的实际情况,选择一种方法。
如果出现升级或通讯错误,请先关闭禁用。
本文来源点金主题网,欢迎转载,但请表明出处。