青青子衿、 发表于 2015-12-23 12:42:04

PHP防CC攻击代码

代码上不了图 有需要的站长朋友可以去测试 亲测防CC攻击代码如下:<?php//代理IP直接退出empty($_SERVER['HTTP_VIA']) or exit('Access Denied');//防止快速刷新session_start();$seconds = '3'; //时间段[秒]$refresh = '5'; //刷新次数//设置监控变量$cur_time = time();if(isset($_SESSION['last_time'])){$_SESSION['refresh_times'] += 1;}else{$_SESSION['refresh_times'] = 1;$_SESSION['last_time'] = $cur_time;}//处理监控结果if($cur_time - $_SESSION['last_time'] < $seconds){if($_SESSION['refresh_times'] >= $refresh){//跳转至攻击者服务器地址header(sprintf('Location:%s', 'http://127.0.0.1'));exit('Access Denied');}}else{$_SESSION['refresh_times'] = 0;$_SESSION['last_time'] = $cur_time;}?>

xiaoye 发表于 2015-12-23 13:23:57

如何使用?

青青子衿、 发表于 2015-12-23 14:59:41

xiaoye 发表于 2015-12-23 13:23
如何使用?

代码可以放在每个PHP文件的包含文件中,这样每页都可以起到防CC的效果。里面的参数也可以根据自己的情况进行一些相应的设置。

’Helen 发表于 2015-12-23 17:37:22

get!!!

热心网友7 发表于 2026-5-20 11:10:00

Re: PHP防CC攻击代码

感谢楼主的分享,这段代码思路很清晰,用session来记录访问频率,配合代理检测,确实能起到一定的防CC效果,适合小型站点快速部署。不过有几个小细节想和楼主探讨一下:session_start()最好放在页面最顶部,否则前面有输出的话可能失效;另外把超限的请求直接重定向到127.0.0.1可能会让攻击者看到“连接被拒绝”的反馈,也有点耗服务器资源,如果条件允许,改成返回403或直接die()加空白页可能更轻量一些。还有阈值设置上,3秒5次对正常用户刷新来说稍微严了点,建议根据网站实际访问习惯把$seconds和$refresh调宽松一些,比如6秒5次。整体来说很实用的代码,感谢分享!

热心网友4 发表于 2026-6-16 23:10:00

Re: PHP防CC攻击代码

感谢分享,这段代码实现了一个很实用的防CC思路:通过session记录用户刷新频率,在短时间内超过阈值就触发拦截。逻辑清晰,门槛也不高,适合中小站点快速部署。一个小提醒:如果站点开启了CDN或反向代理,`$_SERVER['HTTP_VIA']` 可能被填充,建议结合实际情况调整判断条件。另外,跳转到127.0.0.1的效果取决于攻击者环境,不一定完全阻断,但作为一种轻量防护手段已经很棒了。再次感谢你的分享!

热心网友4 发表于 2026-6-17 10:15:00

Re: PHP防CC攻击代码

感谢分享这段防CC攻击的代码,思路很清晰。用session记录请求时间和次数来控制频率,再配合代理检测,对一般的小流量攻击能起到不错的效果。不过有一点想提醒一下:如果网站用了负载均衡或者多台服务器共享session,这个基于本地session的方案可能会失效,可以考虑改用redis或memcache来统一计数。另外`$_SERVER['HTTP_VIA']`检测代理可能漏掉一些匿名代理,也许可以配合其他头部字段一起判断。总体来说是简单实用的方法,适合入门防刷。
页: [1]
查看完整版本: PHP防CC攻击代码