安全播报

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
PHP的代码防CC攻击效果代码示例
2023-06-12 09:36:07 【

网页快速恶意刷新,cc攻击就是攻击者利用代理服务器生成指向目标站点的合法请求,模拟多用户不停的对受害网站进行访问,特别是访问那些需要大量数据操作需要大量CUP时间的页面,最终导致目标网站服务器资源耗尽,一直到宕机崩溃,如此一来,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。我们称之为CC攻击。尽管我们可以借助于一些防攻击的软件来实现,不过效果有时并不明显。

下面我提供一段PHP的代码,可以起到一定的防CC攻击效果。
主要功能:在3秒内连续刷新页面5次以上将指向本机 http://127.0.0.1
只需将该代码放到需要防CC攻击的页面即可。
源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$timestampcc= time();
$cc_nowtime= $timestampcc;
if(session_is_registered('cc_lasttime')){
$cc_lasttime= $_SESSION['cc_lasttime'];
$cc_times= $_SESSION['cc_times']+1;
$_SESSION['cc_times'] = $cc_times;
}else{
$cc_lasttime= $cc_nowtime;
$cc_times= 1;
$_SESSION['cc_times'] = $cc_times;
$_SESSION['cc_lasttime'] = $cc_lasttime;
}
if(($cc_nowtime-$cc_lasttime)<3){//3秒内刷新5次以上可能为cc攻击
if($cc_times>=5){
echo'刷新太快!';
exit;
}
}else{
$cc_times= 0;
$_SESSION['cc_lasttime'] = $cc_nowtime;
$_SESSION['cc_times'] = $cc_times;
}
?>

下面是为大家整理的PHP防CC攻击的有效方法:

1.session记录
submit.php为发送页面,在这个页面上设置一个session变量,并作为隐藏域和表单一起发送到submitdeal.php页面,在服务器端把post上来的隐藏变量和服务器端记录的session变量进行对比,比如一样,则写入数据库并清除session,这样用户刷新页面,两个值不相等提示错误或跳转。
2.验证码
原理和第一种一样,只是session数据不作为隐藏域提交,而是让用户填写,大多数网站都采用文字验证码和图片验证码,防CC攻击,CDN加速,高防IP,高防CDN,DDOS防火墙,DDOS防护,图片验证码安全性高。

3.IP绑定
提交数据后,先从IP表里检索客户端IP,如果有,并且没有过期,那么报错,否则写入数据库,然后再取客房端IP,把IP写入数据库。
4.cookie:客户提交后处理程序先检索客户端有没有设置cookie,如果有,则不重复提交;如果没有,则写数据,再写个cookie;
例:

用户无意义的频繁跳转、请求都会给服务器加重很多负担 其实 用cookie就可以防止这一点。

1
2
3
4
5
6
7
<?php
error_reporting(0);
//if($_COOKIE["ck"])die("刷新过快!");
if($_COOKIE["ck"])header("Location:http://www.baidu.com");//这里如果用户刷新过快,给予终止php脚本或者直接302跳转
setcookie("ck","1",time()+3);//设定cookie存活时间3s
echo"hello!";
?>

方式一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php  
session_start();  
$k=$_GET['k'];  
$t=$_GET['t'];  
$allowTime= 1800;//防刷新时间  
$ip= get_client_ip();  
$allowT= md5($ip.$k.$t);  
if(!isset($_SESSION[$allowT]))  
{  
$refresh= true;  
$_SESSION[$allowT] = time();  
}elseif(time() - $_SESSION[$allowT]>$allowTime){  
$refresh= true;  
$_SESSION[$allowT] = time();  
}else{  
$refresh= false;  
}  
?>

方式二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
session_start();
if(!emptyempty($_POST[name])){
$data= $_POST[name];
$tag= $_POST[tag];
if($_SESSION[status]==$tag){
echo$data;
}else{
echo"不允许刷新!";
}
}
$v= mt_rand(1,10000);
?>
<form method="post"name="magic"action="f5.php"><input type="hidden"
name="tag"value="<?=$v?>"><input type=text name="name"><input type="submit"value="submit">
</form>
<?
echo$v;
$_SESSION[status] = $v;
?>

方式三:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
session_start();
if(!emptyempty($_POST[name])){
$data= $_POST[name];
$tag= $_POST[tag];
if($_SESSION[status]==$tag){
echo$data;
}else{
echo"不允许刷新!";
}
}
$v= mt_rand(1,10000);
?>
<form method="post"name="magic"action="f5.php"><input type="hidden"
name="tag"value="<?=$v?>"><input type=text name="name"><input type="submit"value="submit">
</form>
<?
echo$v;
$_SESSION[status] = $v;
?>

以上就是php防止CC攻击的多种方式,希望能帮助大家防止网页快速恶意刷新。

】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇GPU服务器优势,哪些行业需要配备.. 下一篇2023年CC攻击防御市场发展报告

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:010-56157787 ,010-56159998
企业QQ:4000043998
技术支持:010-56159998
E-Mail:800@fangyuba.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:4000043998 01056155355
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800