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博客软件中,该软件于2003年确定了WordPress。该系统的代码存储在站点根目录下的xmlrpc.php文件中。纵然XML-RPC在很洪水平上已经由时,它仍然存在。
在WordPress的早期版本中,默认情形下已关闭XML-RPC。然则自v3.5版本最先,默认情形下又启用它。这样做的主要缘故原由是允许WordPress移动应用程序与WordPress安装进行对话通讯。
若是您在v3.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的主要缘故原由是由于可以通过它注入平安破绽, 而且xmlrpc.php可能成为攻击的目的。
既然不再需要XML-RPC在WordPress之外进行通讯,就没有理由保持它的激活状态。这就是为什么通过禁用它来提高站点平安性。
若是xmlrpc.php会对WordPress网站造成平安隐患,那么为什么不将其完全从WordPress中删除呢?
这是由于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网站上运行。
并非简朴地检查该文件是否存在:xmlrpc.php是每个WordPress安装的一部门,纵然禁用了XML-RPC,它仍然存在。
删除任何内容之前,请务必备份您的网站(注:对网站系统任何焦点文件进行修改删除及处置数据库等操作,建议尽可能先备份原文件或者数据库,再执行操作,以免造成不需要的穷苦)。在这种情形下,不要仅仅删除xmlrpc.php文件,由于它会损坏您的站点。
要检查您的站点上是否启用了xmlrpc.php,请使用WordPress XML-RPC验证服务。这将检查您的站点并见告你网站是否启用了xmlrpc.php。
输入一个我们的测试网站,检测网站的效果如下:
PHP框架基础知识及2020年最流行的PHP框架
这解释xmlrpc.php在该测试网站上已被禁用。若是您运行检查并发现xmlrpc.php仍在站点上启用,如何关闭它?
如何禁用xmlrpc.php
禁用xmlrpc.php有两种方式:
- 如何使用插件禁用xmlrpc.php
- 如何在没有插件的情形下禁用xmlrpc.php
如何使用插件禁用xmlrpc.php
(1)使用插件禁用XML-RPC
安装插件以禁用xmlrpc.php是最简朴的方式。你可以通过安装Disable XML-RPC插件来实现。使用方式如下:
对一个启用了xmlrpc.php的网站进行XML-RPC检测,你会看到下面的效果:
通过WordPress仪表盘的“ 插件”界面安装插件,然后将其启用。
您无需执行其他任何操作:启用插件即可禁用XML-RPC。再次对该测试网站进行检查,则会获得差其余效果:
(2)使用插件禁用XML-RPC Pingbacks
然则,若是要禁用xmlrpc.php的某部门功效,好比Pingback,该怎么办?使用Disable XML-RPC Pingback插件,您可以仅禁用pingback功效,这意味着若是需要,您仍然可以接见XML-RPC的其他功效。
(3)使用插件设置XML-RPC和REST API激活
若是要对站点上的xmlrpc.php和REST API的设置方式进行更仔细的控制,可以安装REST XML-RPC Data Checker插件。
安装并启用此插件后,转到 设置>REST XML-RPC Data Checker ,然后单击“ XML-RPC”选项卡。
可以准确设置xmlrpc.php的哪些功效在站点上处于流动状态。
或者,您可以将其完全关闭。而且,若是您还想控制REST API,则插件会为您提供另一个选项卡。
如何在没有插件的情形下禁用xmlrpc.php
若是您不想在您的站点上安装这类插件,则可以通过WordPress过滤器,或.htaccess文件、Nginx设置文件添加一些代码来禁用xmlrpc.php 。
(1)通过过滤器禁用xmlrpc.php
使用xmlrpc_enabled过滤器禁用xmlrpc.php,将此功效添加到其中一个插件并启用即可:
add_filter( 'xmlrpc_enabled', '__return_false' );
固然也可以将其添加到主题functions文件中,然则编写插件是一种更好的做法。
(2)通过.htacess文件或者Nginx设置文件禁用xmlrpc.php
另一种选择与编辑.htaccess文件或者Nginx设置文件来禁用XML-RPC功效。
若是你的服务器使用的是Apache,则网站根目录找到.htaccess文件中,添加以下代码:
<Files xmlrpc.php> Order Allow,Deny Deny from all </Files>
若是你的服务器使用的是Nginx,将以下代码添加到Nginx.config文件中:
location ~* ^/xmlrpc.php$ { return 403; }
您何时需要启用xmlrpc.php?
在某些情形下,需要在WordPress网站上启用xmlrpc.php,或者不应该完全禁用它。
- 没有运行REST API(不建议使用,但在某些情形下是必须的),但需要在WordPress网站和其他系统之间进行通讯。
- 无法将WordPress更新至版本4.4或更高版本,因此无权接见REST API。这可能是由于主题或插件不兼容,若是可能,建议尽快使用取代主题或者插件。
- 正在使用无法接见WP REST API但可以接见XML-RPC的外部应用程序(从久远来看,建议更新该应用程序或切换到兼容REST API的应用程序)。
以上这些都不是坚持继续启用XML-RPC理由,是一种“不思进取”的行为。
它仍然存在于WordPress中的唯一缘故原由是为了向后兼容,只有在使用过时的系统时才使用它。对于任何想要使其站点保持最新状态并使用最新手艺的人,禁用xmlrpc.php才是正途。
小结
XML-RPC规范是在WordPress确定之前就开发了,它是WordPress与外部系统和应用程序进行通讯的一种手段。
既然REST API允许您的站点与其他应用程序通讯,则可以平安地禁用xmlrpc.php。根据上述步骤操作,则可以通过禁用它来提高网站的平安性。
深入探讨15种主流图片格式及其优缺点