WordPress 始终具有内置功能,可让您与您的网站进行远程交互。 面对现实,有时您需要访问您的网站,而您的计算机不会在附近的任何地方。 长期以来,解决方案是一个名为 xmlrpc.php 。 但近年来,该文件更像是一种害虫,而不是一种解决方案。
下面我们将深入探讨 xmlrpc.php 的实际含义以及创建它的原因。 我们还概述了它导致的常见安全问题以及如何在您自己的 WordPress 网站上修补它们。
什么是 Xmlrpc.php?
XML-RPC 是 WordPress 的一个特性,可以传输数据,HTTP 作为传输机制,XML 作为编码机制。 由于 WordPress 不是一个自封闭的系统,并且偶尔需要与其他系统进行通信,因此试图处理这项工作。
例如,假设您想通过移动设备在您的网站上发帖,因为您的计算机不在附近。 您可以使用 xmlrpc.php 启用的远程访问功能来做到这一点。
xmlrpc.php 启用的核心功能是允许您通过智能手机连接到您的站点,实现来自其他站点的引用和 pingback,以及与 Jetpack 插件相关的一些功能。
为什么创建 Xmlrpc.php 以及如何使用它?
XML-RPC 的实现可以追溯到 WordPress 的早期,甚至还没有成为 WordPress。
回到互联网的早期,当连接速度非常慢时,写入和发布到网络的过程更加困难和耗时。 大多数人不是在浏览器本身内编写,而是离线编写,然后将他们的内容复制并粘贴到网络上。 尽管如此,这个过程还远非理想。
解决方案(当时)是创建一个离线博客客户端,您可以在其中撰写内容,然后连接到您的博客以发布它。 此连接是通过 XML-RPC 完成的。 有了 XML-RPC 的基本框架,早期的应用程序使用相同的连接来允许人们从其他设备登录到他们的 WordPress 站点。
现在的 XML-RPC
2008 年的 WordPress 2.6 版本提供了启用或禁用 XML-RPC 的选项。 但是,随着 WordPress iPhone 应用程序的发布,默认情况下启用了 XML-RPC 支持,并且没有选项可以关闭该设置。 直到今天,这仍然是正确的。
然而,随着时间的推移,这个文件的功能已经大大减少,文件的整体大小已经从 83kb 减少到 3kb,所以它的作用没有以前那么大了。
XML-RPC 的未来
使用新的 WordPress API,我们可以预期 XML-RPC 将完全被淘汰。 今天,这个新的 API 仍处于试用阶段,只能通过使用插件来启用。
但是,您可以期望 API 将来会直接编码到 WordPress 核心中,这将在很大程度上完全消除对 xmlrpc.php 文件的需要。
新的 API 并不完美,但它为 xmlrpc.php 解决的问题提供了更强大和更安全的解决方案。
为什么你应该禁用 Xmlrpc.php
XML-RPC 的最大问题是出现的安全问题。 问题不在于 XML-RPC 直接,而是如何使用该文件对您的站点进行暴力攻击。
当然,您可以使用非常强大的密码和 WordPress 安全插件来保护自己。 但是,最好的保护模式是简单地禁用它。
XML-RPC 有两个主要弱点,过去曾被利用过。
首先是使用蛮力攻击进入您的网站。 攻击者将尝试使用各种用户名和密码组合使用 xmlrpc.php 访问您的站点。 他们可以有效地使用单个命令来测试数百个不同的密码。 这使他们能够绕过通常检测和阻止暴力攻击的安全工具。
第二个是通过 DDoS 攻击使网站脱机。 黑客会使用 WordPress 中的 pingback 功能将 pingback 即时发送到数千个站点。 xmlrpc.php 中的此功能为黑客提供了几乎无穷无尽的 IP 地址来分发 DDoS 攻击。
要检查 XML-RPC 是否在您的站点上运行,您可以通过名为 XML-RPC Validator 的工具运行它。 通过该工具运行您的站点,如果您收到错误消息,则表示您没有启用 XML-RPC。
如果您收到成功消息,则可以使用以下两种方法之一停止 xmlrpc.php。
方法 1:使用插件禁用 Xmlrpc.php
在您的 WordPress 网站上禁用 XML-RPC 再简单不过了。
导航到 插件 › 添加新 从 WordPress 仪表板 搜索 Disable XML-RPC 并安装如下图所示的插件:
激活插件,一切就绪。 这个插件会自动插入必要的代码来关闭 XML-RPC。
但是,请记住,某些现有插件可能会使用部分 XML-RPC,因此完全禁用它可能会导致插件冲突或站点的某些元素不再起作用。
如果您只想关闭 XML-RPC 的某些元素,但仍允许某些插件和功能工作,请改用以下插件:
- Stop XML-RPC Attack。 这个插件将阻止所有 XML-RPC 攻击,但它会继续允许像 Jetpack 这样的插件以及其他自动工具和插件保留对 xmlrpc.php 文件的访问权限。
- Control XML-RPC Publishing。 这允许您保留对 xmlrpc.php 提供的远程发布选项的控制和使用。
方法 2:手动禁用 Xmlrpc.php
如果您不想使用插件并更喜欢手动操作,请遵循此方法。 它将在传递到 WordPress 之前停止所有传入的 xmlrpc.php 请求。
打开您的 .htaccess 文件。 您可能必须在文件管理器或 FTP 客户端中打开“显示隐藏文件”才能找到该文件。
在您的 .htaccess 文件中,粘贴以下代码:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
重要的! 将 xxx.xxx.xxx.xxx 更改为您希望允许访问 xmlrpc.php 的 IP 地址或完全删除此行。
结论
总的来说,XML-RPC 是解决由于远程发布到 WordPress 站点而发生的一些问题的可靠解决方案。 然而,这个功能带来了一些安全漏洞,最终对一些 WordPress 网站所有者造成了相当大的破坏。
为确保您的站点保持安全,最好完全禁用 xmlrpc.php。 除非你需要远程发布和 Jetpack 插件所需的一些功能。 然后,您应该使用允许这些功能的解决方法插件,同时仍然修补安全漏洞。