WordPress中xmlrpc.php的完整指南(这是什么,安全风险,如何禁用它)

开发XML-RPC WordPress规范是为了标准化不同系统之间的通信,这意味着WordPress外部的应用程序(例如其他博客平台和桌面客户端)可以与WordPress进行交互。

自WordPress诞生以来,该规范一直是WordPress的一部分,并且做得非常有用。没有它,WordPress就会处于自己的孤岛,与互联网的其余部分分开。

但是,xmlrpc.php有其缺点。它可以向您的WordPress网站引入漏洞,现已被WordPress REST 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可以与之交互的系统范围比xmlrpc.php允许的范围大得多。此外,还有更多的灵活性。

由于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。不需要它,这可能会使您的网站易受攻击。

使用WordPress,我们的流量增长了1,187%。
我们将向您展示如何。
加入20,000多个其他人,他们每周都会收到有关WordPress内部技巧的新闻!

现在订阅

成功!感谢您的订阅

您将在一周内收到下一期的Kinsta新闻通讯。

订阅Kinsta新闻通讯

订阅

我同意条款和条件以及隐私政策

信息

尽管Kinsta本身不支持OAuth,但Enterprise及以上计划可以要求将其实现。

xmlrpc.php是否在您的WordPress网站上运行?

您需要做的第一件事是确定xmlrpc.php是否正在您的WordPress网站上运行。

这不是检查文件是否存在的简单情况:它是每个WordPress安装的一部分,即使XML-RPC被禁用,该文件也将存在。

删除任何内容之前,请务必备份您的网站。在这种情况下,不要仅仅删除xmlrpc.php文件,因为它会破坏您的站点。

要检查您的站点上是否启用了xmlrpc.php,请使用WordPress XML-RPC验证服务。这将检查您的站点并告诉您是否启用了xmlrpc.php。

WordPress XML-RPC验证服务

WordPress XML-RPC验证服务

这是我在服务上检查此站点时得到的结果。

Kinsta XML-RPC检查

Kinsta XML-RPC检查

这表明xmlrpc.php在kinsta.com上已被禁用。因此,如果您运行检查并发现xmlrpc.php仍在您的站点上启用,如何关闭它?

如何禁用xmlrpc.php

有三种禁用xmlrpc.php的方法:

让我们分别看看每个。

如何使用插件禁用xmlrpc.php

安装插件以禁用xmlrpc.php是最简单的方法。Disable XML-RPC插件将完全禁用它。使用方法如下。

我的出发点是我自己的网站,在该网站上启用了xmlrpc.php。您可以通过我做的支票看到:

Rachel McCollin网站-XML-RPC检查

Rachel McCollin网站– XML-RPC检查

通过WordPress管理员中的“插件”屏幕安装插件,然后将其激活。

您无需执行其他任何操作:激活插件将导致它禁用XML-RPC。现在,如果我在自己的网站上进行检查,则会得到不同的结果:

Rachel McCollin网站-第二次XML-RPC检查

Rachel McCollin网站–第二次XML-RPC检查

就这么简单!

禁用带有插件的XML-RPC Pingbacks

但是,如果您想禁用xmlrpc.php的某些方面而不是其他方面,该怎么办?使用Disable XML-RPC Pingback插件,您可以仅禁用pingback功能,这意味着如果需要,您仍然可以访问XML-RPC的其他功能。

该插件的工作方式与Disable XML-RPC插件相同:只需安装,激活它,它便会工作。

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

如果要更精细地控制在站点上同时配置xmlrpc.php和REST API的方式,则可以安装REST XML-RPC Data Checker插件。

安装并激活此插件后,转到“设置”>“ REST XML-RPC数据检查器”,然后单击“ XML-RPC”选项卡。

REST XML-RPC数据检查器

REST XML-RPC数据检查器

这使您可以准确配置xmlrpc.php的哪些方面在您的站点上处于活动状态。

另外,您也可以将其完全关闭。而且,如果您还想控制REST API,则该插件会为您提供另一个选项卡。

是否需要快速,安全且对开发人员友好的托管?Kinsta在构建时就考虑了WordPress开发人员,并提供了许多工具和功能强大的仪表板。查看我们的计划

如何在没有插件的情况下禁用xmlrpc.php

如果您不想在网站上安装其他插件,则可以通过在过滤器中或向.htaccess文件中添加一些代码来禁用xmlrpc.php。让我们看看这两种方法。

通过过滤器禁用xmlrpc.php

这里的一个选项是使用xmlrpc_enabled过滤器禁用xmlrpc.php。将此功能添加到插件并在您的站点上激活它:

add_filter(’xmlrpc_enabled’,’__return_false’);

您可以将其添加到主题函数文件中,但是最好写一个插件。

另一个选项与编辑.htaccess文件有关,该文件可通过FTP或cPanel连接到您站点的服务器,而使用Apache的托管服务提供商可以使用该文件。

信息

Kinsta使用Nginx Web服务器,这意味着您将没有可用的.htaccess文件。相反,您可以利用仪表板内的工具,这些工具可以通过MyKinsta仪表板以更直观的方式复制许多重要的.htaccess功能。

通过.htacess文件禁用xmlrpc.php

在您的.htaccess文件中,添加以下代码:

<Files xmlrpc.php>
允许
所有订单,拒绝拒绝
</ Files>

这样做之前,请确保对旧文件进行备份,以防万一遇到任何问题。

让您的托管服务提供商禁用xmlrpc.php

或者,如果检测到攻击,某些托管服务提供商将禁用xmlrpc.php。

在Kinsta,当检测到通过XML-RPC的攻击时,会自动将一小段代码添加到Nginx.config文件中:

位置〜* ^ / xmlrpc.php $ {
返回403;
}

这将产生403错误,并停止攻击。

如果您自己执行此操作,则最好使用上述方法之一。但是在您这样做之前,请务必先咨询您的托管服务提供商。

您何时需要启用xmlrpc.php?

在某些情况下,您确实需要在WordPress网站上启用xmlrpc.php,或者您不应该完全禁用它。

这些是:

  • 您没有运行REST API(不建议使用,但在某些情况下是必需的),但是需要在WordPress网站和其他系统之间进行通信。
  • 您无法将WordPress更新到版本4.4或更高版本,因此无权访问REST API。这可能是由于您的托管设置受到限制(在这种情况下,我将更改托管提供商)或主题或插件不兼容(在这种情况下,我将替换或更新这些内容)。
  • 您正在使用无法访问WP REST API但可以访问XML-RPC的外部应用程序(从长远来看,我建议您更新该应用程序或切换到REST兼容的应用程序)。

而已!这些都不是保持XML-RPC规范打开的特别好的理由。

它仍然存在于WordPress中的唯一原因是为了向后兼容,只有在使用过时的系统时才使用它。对于任何想要使其站点保持最新状态并使用最新技术的人,禁用xmlrpc.php都是路要走。

/ *单击鸣叫* /
正文a.novashare-ctt {
display:block;
背景:#00abf0;
边距:30px自动;
填充:20px 20px 20px 15px;
颜色:#ffffff;
文字修饰:无!重要;
box-shadow:无!重要;
-webkit-box-shadow:无!重要;
-moz-box-shadow:无!重要;
边框:无;
左边框:5px实线#00abf0;
}
body a.novashare-ctt:hover {
color:#ffffff;
左边框:5px实线#008cc4;
}
正文a.novashare-ctt:visited {
color:#ffffff;
}
body a.novashare-ctt * {
指针事件:无;
}
正文a.novashare-ctt .novashare-ctt-tweet {
显示:块;
font-size:18px;
行高:27px;
底边距:10px;
}
body a.novashare-ctt .novashare-ctt-cta-container {
display:block;
溢出:隐藏;
}
body a.novashare-ctt .novashare-ctt-cta {
float:right;
}
body a.novashare-ctt.novashare-ctt-cta-left .novashare-ctt-cta {
float:left;
}
body a.novashare-ctt .novashare-ctt-cta-text {
font-size:16px;
行高:16px;
垂直对齐:中间;
}
正文a.novashare-ctt .novashare-ctt-cta-icon {
margin-left:10px;
显示:inline-block;
垂直对齐:中间;
}
正文a.novashare-ctt .novashare-ctt-cta-icon svg {
vertical-align:middle;
高度:18px;
}
/ *简单+简单替代主题* /
正文a.novashare-ctt.novashare-ctt-simple {
背景:无;
填充:10px 0px 10px 20px;
颜色:初始;
}
正文a.novashare-ctt.novashare-ctt-simple-alt {
背景:#f9f9f9;
填充:20px;
颜色:初始;
}
正文a.novashare-ctt.novashare-ctt-simple:hover,正文a.novashare-ctt.novashare-ctt-simple-alt:hover {
border-left:5px solid#008cc4;
}
正文a.novashare-ctt.novashare-ctt-simple .novashare-ctt-cta,正文a.novashare-ctt.novashare-ctt-simple-alt .novashare-ctt-cta {
颜色:#00abf0;
}
正文a.novashare-ctt.novashare-ctt-simple:hover .novashare-ctt-cta,正文a.novashare-ctt.novashare-ctt-simple-alt:hover .novashare-ctt-cta {
颜色:#008cc4;
}
XML-RPC曾经是WordPress的重要组成部分。现在,它代表了安全风险?-本指南将准确告诉你如何禁用它在您的网站?。点击鸣叫
摘要

XML-RPC规范是在WordPress创建之前就开发的,它是WordPress与外部系统和应用程序进行通信的一种手段。它具有固有的安全漏洞,可能使您的站点容易受到攻击。

既然REST API允许您的站点与其他应用程序通信,则可以安全地禁用xmlrpc.php。如果您按照上述步骤操作,则可以通过禁用它来提高网站的安全性。

如果您喜欢这篇文章,那么您会喜欢Kinsta的WordPress托管平台。加速您的网站并获得我们经验丰富的WordPress团队的24/7支持。我们基于Google Cloud的基础架构专注于自动扩展,性能和安全性。让我们向您展示Kinsta的与众不同!查看我们的计划

相关文章