如何构建安全的 WordPress 4:限制搜索频率,防止搜索滥用攻击

这是「如何构建安全的 WordPress」系列文章的第四篇,前面三篇是关于用户的:

这篇开始我们转向 WordPress 搜索,WordPress 搜索最大的问题就是会被滥用,搜索滥用攻击(Search Abuse Attack),或者说搜索泛洪攻击(Search Flood Attack),它是 ​HTTP 泛洪攻击(HTTP Flood)​ 的一种变体。

搜索滥用攻击

什么是搜索滥用攻击(Search Abuse Attack):

简单说攻击者恶意利用网站的搜索功能,通过高频、自动化地提交不同的搜索关键词,使服务器持续执行数据库查询,从而消耗系统资源(CPU、数据库连接、带宽等),导致网站响应变慢甚至崩溃。

这类攻击最大的特点是可以绕过缓存,因为 WordPress 搜索的链接是 https://blog.wpjam.com/?s=关键词,攻击者只要使用简单脚本不停的切换关键字(如 ?s=关键词1?s=关键词2),缓存机制无法生效,每次请求都会触发数据库查询。

攻击的结果也是低成本高破坏,因为 WordPress 默认搜索使用 MySQL like 语法去检索文章的标题摘要内容查出相关的文章, MySQL Like 查询相对来说是比较耗时的。这样服务器资源​(CPU、数据库、内存)很容易被耗尽,导致网站瘫痪(DoS/DDoS),正常用户访问行为也就被拖慢,影响业务可用性。

搜索次数限制

这类攻击最大防御方法是限流(Rate Limiting)​,就是限制单个 IP 的搜索请求频率(如 10 次/分钟)。

WPJAM 搜索优化插件 已经集成了搜索限流功能,如下图所示,可以限制支持限制每个 IP 每分钟搜索多少次,达到上限之后屏蔽多少分钟,甚至可以直接关闭搜索:

下图就是用户搜索达到上限之后,用户再次搜索之后页面显示的效果:

WPJAM 搜索优化插件 已经集上面所有的功能和相关代码,直接启用即可,点击查看 WPJAM 搜索优化插件 的详细介绍,Modular 主题也集成了,我会在介绍 WordPress 安全这系列文章的时候,将这些安全相关代码也整合到 Modular 主题中,争取打造最安全的 WordPress 主题。


WPJAM Basic 插件已经集成了 Memcached,下载 WPJAM Basic 之后,将 wpjam-basic/template/ 目录下的 object-cache.php 文件复制到 wp-content 目录下即可。


©我爱水煮鱼,本站推荐使用的主机:阿里云,国外主机建议使用BlueHost

本站长期承接 WordPress 优化建站业务,请联系微信:「chenduopapa」。