gpt4 book ai didi

php - 检测到意外导航时显示验证码以防止流量滥用

转载 作者:行者123 更新时间:2023-12-01 02:21:44 26 4
gpt4 key购买 nike

我注意到一些用户通过下载多个文件(例如同时 500 个文件)并在短时间内打开更多页面来重载我的网站,如果用户检测到意外导航,我想显示验证码 .

我知道如何实现验证码,但我不知道使用 (PHP) 检测流量滥用的最佳方法是什么?

最佳答案

一种常见的方法是使用像 memcached 这样的东西来存储每分钟的请求,我开源了一个小类来实现这一点:php-ratelimiter

如果您有兴趣更全面地解释为什么需要按分钟存储请求,check this post .

总而言之,您的代码最终可能如下所示:

if (!verifyCaptcha()) {
$rateLimiter = new RateLimiter(new Memcache(), $_SERVER["REMOTE_ADDR"]);
try {
$rateLimiter->limitRequestsInMinutes(100, 5);
} catch (RateExceededException $e) {
displayCaptcha();
exit;
}
}

实际上,该代码是基于每分钟的,但您可以很容易地将其调整为每 30 秒:

private function getKeys($halfminutes) {
$keys = array();
$now = time();
for ($time = $now - $halfminutes * 30; $time <= $now; $time += 30) {
$keys[] = $this->prefix . date("dHis", $time);
}
return $keys;
}

关于php - 检测到意外导航时显示验证码以防止流量滥用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16036237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com