WordPress 最大安全隐患,xmlrpc.php

什么是 XML-RPC
首先要明白什么是 XML-RPC,它的全称是 XML Remote Procedure Call,即 XML 远程过程调用,它是一套允许运行在不同操作系统、不同环境的程序实现基于网络过程调用的规范和一系列的实现。

简单说 RPC 就是通过像本地服务一样远程调用另外一台服务器上的服务来完成需求,XML-RPC 就是使用 XML 作为编码格式的 RPC。

XML-RPC 使用 http 作为传输协议,XML 作为传送信息的编码格式,一个 XML-RPC 消息就是一个请求体为 XML 的 http-post 请求,被调用的方法在服务器端执行并将执行结果以 XML 格式编码后返回。

一个 XML-RPC 协议包括两部分:

  • RPC client,用来向 RPC 服务端调用方法,并接收方法的返回数据。
  • RPC server,用于响应 RPC 客户端的请求,执行方法,并回送方法执行结果。

WordPress 源代码( xmlrpc.php 文件)中已经包含了完整的 RPC 服务端代码,它支持对文章,媒体,评论,分类,选项等等各方面数据的管理。

换句话说,只要懂 XML-RPC 协议,就可以使用 XML-RPC 对 WordPress 博客的各个方面进行操作,也就是说可以使用 XML-RPC 做 WordPress 的客户端。

XML-RPC 安全隐患

XML-RPC 那么好用,也造成了一定的安全隐患,主要是给攻击者提供了便利,所以攻击者的一项工作就是扫描 xmlrpc.php 文件,以便可以实现:

1. XML-RPC pingbacks 攻击,攻击者可以利用 XML-RPC 的 pingbacks 方法对 WordPress 实行 DDoS (分布式拒绝服务)攻击,如果你使用了 CDN 服务商的 DNS 保护服务,攻击者还可以使用 pingbacks 方法获取站点的真实 IP,剩下不用我说了吧。😂

2. 即使 WordPress 设置了登录次数限制,但是使用 XML-RPC 暴力破解 WordPress 的账号密码却逃过了限制,并且 XML-RPC 一次请求就可以执行上百次密码的暴力破解。😓

彻底屏蔽 XML-RPC

既然存在这些问题,那么最好关闭 WordPress 的 XML-RPC 服务,群里面有些小伙伴建议直接删除 xmlrpc.php 文件就好了,但是删除了,下次 WordPress 升级之后又会出现,不太建议这么做。

最快的方法,只需在当前主题的 functions.php 文件添加下面这行代码就能关闭它:

add_filter('xmlrpc_enabled', '__return_false');

使用 PHP 代码或者插件方式关闭,xmlrpc.php 文件被扫描的时候,整个 WordPress 代码还是会被加载,所以如果浪费服务器资源在这上面,可以使用下面方式屏蔽服务器上 xmlrpc.php 文件的请求:

1. Apache 可以通过在 .htaccess 文件前面添加以下代码:

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

2. nginx 服务器可以添加下面的规则:

location ~* ^/xmlrpc.php$ {
return 403;
}

3. 如果以上两个方式都不好用,还可以在 WordPress 的 wp-config.php 文件最开始的地方添加:

if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){
    $protocol   = $_SERVER['SERVER_PROTOCOL'] ?? '';

    if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){
        $protocol   = 'HTTP/1.0';
    }

    header("$protocol 403 Forbidden", true, 403);
    die;
}

本文摘自网络,不代表短经典网立场 https://www.duanjingdian.com/338.html

上一篇 2024 年 4 月 28 日 下午11:30
下一篇 2024 年 5 月 4 日 下午4:16

相关推荐

  • WordPress,Redis Object Cache缓存插件

    WordPress使用Redis Object Cache缓存插件加速网站的方法 在互联网行业中,网站的访问速度对于用户体验和搜索引擎排名都至关重要,为了提高网站的访问速度,我们可…

    2024 年 4 月 16 日
    223
  • 让WordPress自己申请免费 Let’s Encrypt SSL证书的插件WP Encryption

    如今看来,免费SSL证书大概只有Let’s Encrypt SSL 靠谱些,不过每三个月一次申请有点麻烦,SSH下设置麻烦,宝塔等面板自动申请有时候会失效,比如宝塔做了www的30…

    2024 年 4 月 18 日
    330
  • wordpress自定义导航栏

    1、登录到WordPress后台 打开你的WordPress网站,并登录到后台管理界面。 2、进入外观设置 在左侧导航栏中,点击"外观"选项,然后选择"菜单"。 3、创建主导航菜单…

    WordPress 2024 年 4 月 27 日
    191
  • WordPress常用的几款电商商城插件

    1、WooCommerce 作为最受欢迎和功能强大的商城插件之一,WooCommerce提供了完整的电子商务解决方案。 支持创建产品、分类、购物车、支付、订单管理等功能。 提供多种…

    WordPress 2024 年 4 月 27 日
    190
  • WordPress,怎样实现用户登录显示不同的菜单?

    下面由WordPress教程栏目给大家介绍登录用户显示不同的WordPress菜单,希望对需要的朋友有所帮助! 如果让登录用户与未登录浏览者,显示不同的菜单,可以通过下面的代码实现…

    WordPress 2024 年 4 月 26 日
    199
  • WordPress自动清空回收站的方法

    WordPress中,当您删除某个文章、页面、评论或附件时,它们不会被永久删除,而是被移动到一个名为“回收站”的地方,如果您想恢复已删除的内容,可以从回收站中恢复,如果您想彻底清空…

    2024 年 4 月 16 日
    205
  • WordPress分类栏目怎么让置顶文章显示在最前面

    如何将分类栏目里的置顶文章显示在最前面呢?然后再显示新发布的文章。怎么实现在调用最新文章列表中置顶文章靠前显示呢?代码如下: <?php $sticky = get_opti…

    WordPress 2024 年 5 月 30 日
    183
  • WordPress使用Redis提高网站访问速度

    为什么使用Redis? 1、高性能:Redis是一个内存数据库,读写速度非常快,可以达到每秒数十万次的读写操作。 2、持久化:Redis支持数据的持久化,可以将数据保存到磁盘中,防…

    WordPress 2024 年 4 月 27 日
    249
  • 如何优化wordpress主机内存?

    优化WordPress主机内存的方法有很多,以下是一些建议: 1、选择合适的主机方案 如何优化wordpress主机内存? (wordpress主机内存) 选择适合您网站需求的主机…

    2024 年 4 月 16 日
    199
  • WordPress图片压缩插件

    WordPress图片压缩插件 为什么在WordPress网站上使用有损压缩图片? 1、减少页面加载时间:图片是网页加载的主要部分,有损压缩可以显著减小图片文件的大小,从而加快网页…

    2024 年 4 月 16 日
    215