如何限制访客自愿打开数百个标签?

问题描述 投票:0回答:2

我最近面临一个问题,一些仇恨者在我的网站上打开数百个标签来将其删除。这是一个托管在 VPS 上的 Wordpress 网站,具有 12 线程 CPU 和 48 GB 内存,运行 PHP 8.1。它为登录和注销用户使用 LiteSpeed 缓存,并为基于 ajax 的页面片段提供一些私有缓存规则。

当他们攻击时,CPU 负载在多个小时内保持在 100%,并且网站被破坏(与数据库的连接无法工作)。

它受到 Cloudflare 免费计划的保护,但问题是它被视为合法访问者,而实际上并非如此。我找不到一个干净的解决方案来将单个 IP 地址限制为每秒或每分钟最多 XX 个请求。

我在 stackoverflow 上找到的唯一东西是一个 PHP 脚本,用于将变量存储在 $_SESSION 中,但如果你有更好的建议,我想阻止这种方法。

我在 webmasters.stacjexchange 上提出了问题,但他们友好地关闭了它,因为这是关于他们的编程,所以请不要将我发送到另一个堆栈交换子网站。

php ajax wordpress security
2个回答
2
投票

CloudFlare 对每个 IP 进行速率限制,不会关心流量是否合法。

如果您使用框架,许多框架(例如 Laravel)都有内置的速率限制,通常使用中间件和缓存服务器(例如 redis)来跟踪来自每个 IP 的请求数量 - 请参阅https:/ /laravel.com/docs/10.x/rate-limiting

正如@ceejayoz 在帖子的评论中所说,“数百个”请求不足以让您的网站瘫痪,因此现在可能是查看代码中瓶颈的好时机。例如,一个常见的瓶颈是通过非本地 IP 连接到数据库。


0
投票

Cloudflare 提供了帮助,我决定重构网站的某些部分以限制 AJAX 调用的数量。 我想异步加载页面的不同部分,使其看起来更 2020 年,即使它是 PHP Wordpress,但看看性能的差异,这似乎是一个非常糟糕的主意。

尽管如此,Cloudflare 速率限制昨晚已多次触发,因此它肯定能发挥作用。我读到 Sucuri 也可能是 Cloudflare 的一个很好的替代品,便宜 10 倍。

© www.soinside.com 2019 - 2024. All rights reserved.