尽快禁用xmlrpc.php以确保WordPress的安全。
WordPress的XML-RPC规范是为了规范不同系统之间的通信,这意味着WordPress之外的应用程序(如其他博客平台和桌面客户端)可以与WordPress进行交互。
自从WordPress诞生以来,这个规范就是WordPress的一部分,非常有用。没有它,WordPress将成为一个孤岛,与互联网的其他部分分道扬镳。
然而,xmlrpc.php有它的缺点。通过它,你可以给你的WordPress网站注入漏洞。现在已经被WordPress REST API取代,在通过API将WordPress开放给其他应用方面做得更好。
在这篇文章中,我们将解释什么是xmlrpc.php,为什么它应该被禁用,以及如何确定它是否在WordPress网站上运行。
什么是xmlrpc.php?
为什么禁用xmlrpc.php?
xmlrpc.php在WordPress网站上运行吗?
如何禁用xmlrpc.php?
我什么时候需要启用xmlrpc.php?
什么是xmlrpc.php?
XML-RPC是一个支持WordPress和其他系统之间通信的规范。它通过使用HTTP作为传输机制和XML作为编码机制来标准化这些通信来做到这一点。
XML-RPC早于WordPress:它出现在b2博客软件中,B2博客软件在2003年创建了WordPress。该系统的代码存储在网站根目录下的xmlrpc.php文件中。尽管XML-RPC在很大程度上已经过时,但它仍然存在。
在WordPress的早期版本中,XML-RPC是默认关闭的。但从3.5版开始,默认启用。这样做的主要原因是允许WordPress移动应用程序与WordPress安装程序通信。
如果您使用的是3.5版之前的WordPress mobile应用程序,您可能会记得您必须在您的站点上启用XML-RPC来使用该应用程序发布内容。这是因为应用程序本身没有运行WordPress。相反,它是一个独立的应用程序,通过xmlrpc.php与WordPress网站通信。
然而,XML-RPC不仅用于移动应用程序:它还用于WordPress和其他博客平台之间的通信。它还支持citation和pingback,并支持Jetpack插件,可以从托管的WordPress网站链接到著名的WordPress平台。
然而,因为REST API已经集成到WordPress核心中,xmlrpc.php文件不再用于这种通信。相反,REST API用于与WordPress移动应用程序、桌面客户端、其他博客平台、WordPress(用于Jetpack插件)以及其他系统和服务进行通信。REST API——可以与之交互的系统范围远远大于xmlrpc.php所允许的范围。此外,它具有更大的灵活性。
由于REST API取代了XML-RPC,我们应该在站点上禁用xmlrpc.php。
为什么禁用xmlrpc.php?
WordPress网站禁用xmlrpc.php的主要原因是它可以注入安全漏洞,xmlrpc.php可能是攻击的目标。
由于不再需要XML-RPC在WordPress之外进行通信,因此没有理由让它保持活动状态。这就是为什么禁用它可以提高网站的安全性。
如果xmlrpc.php会给WordPress网站带来安全风险,那么为什么不把它从WordPress上彻底删除呢?
这是因为WordPress的主要功能之一始终是向后兼容。如果你管理好网站,你应该知道保持WordPress和任何插件或主题版本的更新是至关重要的。
但是总会有一批站长不愿意或者不能够把自己的WordPress版本更新到最新版本。如果安装的WordPress版本早于REST API,这些网站仍然需要访问xmlrpc.php。
通过XML-RPC ping back的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网站上呢?
不要简单地检查文件是否存在:xmlrpc.php是每个WordPress安装的一部分,即使XML-RPC被禁用,它仍然存在。
在删除任何内容之前,请确保备份您的网站(注意:要修改、删除、处理网站系统中任何核心文件的数据库,建议在执行操作之前尽可能备份原始文件或数据库,以避免不必要的麻烦)。在这种情况下,不要只是删除xmlrpc.php文件,因为它会破坏你的网站。
要检查您的站点是否启用了xmlrpc.php,请使用WordPress XML-RPC认证服务。这将检查您的站点并告诉您它是否支持xmlrpc.php。
进入我们的一个测试网站,测试网站的结果如下:
这表明xmlrpc.php已在该测试网站上被禁用。如果您运行检查,发现xmlrpc.php仍然在网站上启用,您如何关闭它?
如何禁用xmlrpc.php?
有两种方法可以禁用xmlrpc.php:
如何使用插件禁用xmlrpc.php?
如何禁用没有插件的xmlrpc.php?
如何使用插件禁用xmlrpc.php?
(1)使用插件禁用XML-RPC。
安装一个插件来禁用xmlrpc.php是最简单的方法。您可以通过安装禁用XML-RPC插件来实现这一点。用法如下:
在启用了xmlrpc.php的网站上执行XML-RPC检测,您将看到以下结果:
通过WordPress dashboard的“插件”界面安装插件,然后启用。
您不需要做任何其他事情:启用插件来禁用XML-RPC。再次查看测试网站,你会得到不同的结果:
(2)使用插件禁用XML-RPC ping back
但是,如果我想禁用xmlrpc.php的一些功能,比如Pingback,该怎么办?使用禁用XML-RPC pingback插件,您只能禁用pingback函数,这意味着如果需要,您仍然可以访问XML-RPC的其他函数。
(3)使用插件配置XML-RPC和REST API激活
如果您想以更详细的方式控制xmlrpc.php和REST API的配置,可以安装REST XML-RPC数据检查器插件。
安装并启用此插件后,请转到“设置”>“REST XML-RPC数据检查器”,然后单击“XML-RPC”选项卡。
您可以准确地配置xmlrpc.php的哪些功能在站点上处于活动状态。
或者,你可以完全关闭它。而且,如果你还想控制REST API,插件会给你提供另一个选项卡。
如何禁用没有插件的xmlrpc.php?
如果你不想在你的网站上安装这样的插件,你可以通过WordPress过滤器添加一些代码来禁用xmlrpc.php,或者。htaccess文件和Nginx配置文件。
(1)通过滤波器禁用xmlrpc.php。
使用xmlrpc_enabled filter禁用xmlrpc.php,只需将该函数添加到一个插件中并启用它:
add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );
当然,也可以添加到主题函数文件中,但编写插件是更好的方法。
(2)通过禁用xmlrpc.php。htacess文件或Nginx配置文件。
另一个选项是选择和编辑。htaccess文件或Nginx配置文件来禁用XML-RPC功能。
如果您的服务器使用Apache,请找到。htaccess文件,并添加以下代码:
Order Allow,DenyDeny from all
如果您的服务器使用Nginx,请将以下代码添加到Nginx.config文件中:
location ~* ^/xmlrpc.php$ {return 403;}
您何时需要启用xmlrpc.php?
在某些情况下,xmlrpc.php需要在WordPress网站上启用,或者不应该完全禁用。
没有运行REST API(不推荐,但在某些情况下需要),但需要WordPress网站和其他系统之间的通信。
你不能将WordPress更新到4.4或更高版本,所以你没有访问REST API的权限。这可能是由于不兼容的主题或插件。如果可能的话,建议尽早使用替代主题或插件。
您正在使用的外部应用程序不能访问WP REST API,但可以访问XML-RPC(从长远来看,建议更新此应用程序或切换到与REST API兼容的应用程序)。
这些都不是我们坚持继续启用XML-RPC的理由,而是一种“不求上进”的行为。
它仍然存在于WordPress的唯一原因是,为了向后兼容,只有在使用过时的系统时才使用它。对于任何想保持网站更新和使用最新技术的人来说,禁用xmlrpc.php是正确的方法。
总结
XML-RPC规范是在WordPress创建之前开发的,它是WordPress与外部系统和应用程序通信的一种方式。XML-RPC曾经是WordPress的重要组成部分,现在却可以成为WordPress网站的安全隐患。如果它是不必要的,我们应该禁用它。
因为REST API允许您的站点与其他应用程序通信,所以您可以安全地禁用xmlrpc.php。按照上述步骤,您可以通过禁用网站来提高网站的安全性。