当前位置:首页 > PHP教程 > php高级应用 > 列表

php防止CC攻击代码 php防止网页频繁刷新

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-30 20:36:31 浏览: 评论:0 

这篇文章主要介绍了php防止CC攻击代码和php防止网页频繁刷新,网页快速恶意刷新,cc攻击利用代理服务器生成指向目标站点的合法请求,模拟多用户不停的对受害网站进行访问,感兴趣的小伙伴们可以研究一下。

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

下面我提供一段PHP的代码,可以起到一定的防CC攻击效果。

主要功能:在3秒内连续刷新页面5次以上将指向本机 http://127.0.0.1

只需将该代码放到需要防CC攻击的页面即可。

源码:

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

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

1.session记录

submit.php为发送页面,在这个页面上设置一个session变量,并作为隐藏域和表单一起发送到submitdeal.php页面,在服务器端把post上来的隐藏变量和服务器端记录的session变量进行对比,比如一样,则写入数据库并清除session,这样用户刷新页面,两个值不相等提示错误或跳转。

优点:不用用户输入验证码

缺点:表单容易被复制

2.验证码

原理和第一种一样,只是session数据不作为隐藏域提交,而是让用户填写,大多数网站都采用文字验证码和图片验证码,图片验证码安全性高。

3.IP绑定

提交数据后,先从IP表里检索客户端IP,如果有,并且没有过期,那么报错,否则写入数据库,然后再取客房端IP,把IP写入数据库。

4.cookie

客户提交后处理程序先检索客户端有没有设置cookie,如果有,则不重复提交;如果没有,则写数据,再写个cookie;

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

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

方式一:

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

方式二:

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

方式三:

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

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

Tags: php防止CC攻击 php网页刷新

分享到: