Thinkphp防CC攻击代码

遇到问题:

昨天网站突然打不开,以为是php环境出了问题,各种排除问题,最终发现是80端口出了故障,于是想到很可能是被同行攻击了,通过 “netstat -ano” 命令发现是慢性的cc攻击,我的云服务器配置比较低,CPU消耗高达100%,服务器80端口资源被占用,最终导致网站直接崩溃。

解决思路:

1、第一个方法是:使用网站安全狗的cc防护功能,但安全狗容易把正常访问的ip也屏蔽,很不利于网站用户的访问。而且网站安全狗在处理大量访问数据时,也一样占用很大的CPU。

2、第二个方法是:把网站的访问端口改成88,然后通过IP安全策略封杀掉80端口,这样确实是能百分百有效的防护攻击,但用户都是用80端口访问的,突然改用80的话,就会无形中丢失很多用户。

3、第三个方法是:找机房技术人员在第一道防火墙添加了80端口的安全策略,技术人员调试了很多次,终于可以无视任何CC攻击了,但为了安全保障,因此在代码里多加了个防CC攻击的功能,代码如下:

indx.php入口文件中添加以下代码:

<?php //防CC攻击 sheli_cc(); function sheli_cc(){ //代理IP直接退出 empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); //防止快速刷新 session_start(); $seconds = '60'; //时间段[秒] $refresh = '12'; //刷新次数 //设置监控变量 $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('请求频率太快,稍候'.$seconds.'秒后再访问!'); } }else{ $_SESSION['refresh_times'] = 0; $_SESSION['last_time'] = $cur_time; } } ?>

原文链接:https://blog.csdn.net/qq15577969/article/details/94288939?ops_request_misc=&request_id=a30996b8c5f84ee488f17d06ee06ab66&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-27-94288939-null-null.268%5Ev1%5Econtrol&utm_term=cc%E9%98%B2%E6%8A%A4

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22409

(0)
上一篇 2024年2月29日
下一篇 2024年2月29日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml