快捷搜索:   nginx

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)

您可能还会对下面的文章感兴趣:

最新评论