PHP使用redis防止CC攻击 PHP+REDIS+CLOUDFLARE 防CC 队列保护API接口
PHP使用redis来记录访客IP数,并针对短时间内高并发的IP进行拉黑处理,减轻MYSQL负担
完整案例代码如下:
以下基于PHP7.3+redis5.0.3开发
<?php if(class_exists('Redis')){ $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $IPmax=5;//每60秒钟允许5个注册请求 $IPtime=60;//每60秒钟允许5个注册请求 $redis = new redis(); $redis -> connect('127.0.0.1','6379'); $ipfromcf=$_SERVER['HTTP_CF_CONNECTING_IP'];//这里是配合cdn.bnxb.com接入CF,所以读取CF传来的IP $num=$redis->get($ipfromcf); if(!$num){$num=1;}else{$num=$num+1;} //echo $num; if($num > $IPmax){ $res['code'] = 2; $res['msg'] = "笨 牛网(B nxb.com)提醒,您注册太频繁,请重试!"; exit(json_encode($res,JSON_UNESCAPED_UNICODE)); } $redis->setex($ipfromcf,$IPtime,$num); } //下面可以放上真正需要执行的MYSQL查询等耗资源高的应用 ?>
案例中用到的思路,就是将访客的IP作为键名,然后访问一次计数加1,整个键有效期60秒,60秒后将清除,重新计数,在这期间,如果这个IP一直访问就会造成计数一直累加,直到超过5次后,调用错误提示并退出
顶(1)
踩(0)
- 最新评论