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

php网站防止刷流量攻击方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-22 17:23:52 浏览: 评论:0 

流量攻击是一种比较初级的网站攻击方法,就是不停的去刷样网站,导致服务器处理不过来或数据库负载不了,导致网站无法正常方法的一种攻击手段了,下面我来介绍一个利用php防网站刷流量攻击方法.

php网站防止刷流量攻击方法实例代码如下:

  1. <?php 
  2. //查询禁止IP 
  3. $ip =$_SERVER['REMOTE_ADDR']; 
  4. $fileht=".htaccess2"
  5. if(!file_exists($fileht))file_put_contents($fileht,""); 
  6. $filehtarr=@file($fileht); 
  7. if(in_array($ip."rn",$filehtarr))die("Warning:"."<br>"."Your IP address are forbided by some reason, IF you have any question Pls emill to shop@mydalle.com!"); 
  8.  
  9. //加入禁止IP 
  10. $time=time(); 
  11. $fileforbid="log/forbidchk.dat"
  12. if(file_exists($fileforbid)) 
  13. if($time-filemtime($fileforbid)>60)unlink($fileforbid); 
  14. else
  15. $fileforbidarr=@file($fileforbid); 
  16. if($ip==substr($fileforbidarr[0],0,strlen($ip))) 
  17. if($time-substr($fileforbidarr[1],0,strlen($time))>600)unlink($fileforbid); 
  18. elseif($fileforbidarr[2]>600){file_put_contents($fileht,$ip."rn",FILE_APPEND);unlink($fileforbid);} 
  19. else{$fileforbidarr[2]++;file_put_contents($fileforbid,$fileforbidarr);} 
  20. //防刷新 
  21. $str=""
  22. $file="log/ipdate.dat"
  23. if(!file_exists("log")&&!is_dir("log"))mkdir("log",0777); 
  24. if(!file_exists($file))file_put_contents($file,""); 
  25. $allowTime = 120;//防刷新时间 
  26. $allowNum=10;//防刷新次数 
  27. $uri=$_SERVER['REQUEST_URI']; 
  28. $checkip=md5($ip); 
  29. $checkuri=md5($uri); 
  30. $yesno=true; 
  31. $ipdate=@file($file); 
  32. foreach($ipdate as $k=>$v
  33. $iptem=substr($v,0,32); 
  34. $uritem=substr($v,32,32); 
  35. $timetem=substr($v,64,10); 
  36. $numtem=substr($v,74); 
  37. if($time-$timetem<$allowTime){ 
  38. if($iptem!=$checkip)$str.=$v
  39. else
  40. $yesno=false; 
  41. if($uritem!=$checkuri)$str.=$iptem.$checkuri.$time."1rn"
  42. elseif($numtem<$allowNum)$str.=$iptem.$uritem.$timetem.($numtem+1)."rn"
  43. else 
  44. if(!file_exists($fileforbid)){$addforbidarr=array($ip."rn",time()."rn",1);file_put_contents($fileforbid,$addforbidarr);} 
  45. file_put_contents("log/forbided_ip.log",$ip."--".date("Y-m-d H:i:s",time())."--".$uri."rn",FILE_APPEND); 
  46. $timepass=$timetem+$allowTime-$time
  47. die("Warning:"."<br>"."Sorry,you are forbided by refreshing frequently too much, Pls wait for ".$timepass." seconds to continue!"); 
  48. }//开源代码phpfensi.com 
  49. if($yesno$str.=$checkip.$checkuri.$time."1rn"
  50. file_put_contents($file,$str); 
  51. ?> 

利用session 跟踪防post提交,代码如下:

  1. <?php  
  2. session_start();  
  3. $clean = array();  
  4. $email_pattern = '/^[^@s<&>]+@([-a-z0-9]+.)+[a-z]{2,}$/i';  
  5. if (preg_match($email_pattern$_POST['email']))  
  6. {  
  7. $clean['email'] = $_POST['email'];  
  8. $user = $_SESSION['user'];  
  9. $new_password = md5(uniqid(rand(), TRUE));  
  10. if ($_SESSION['verified'])  
  11. {  
  12. /* Update Password */  
  13. mail($clean['email'], 'Your New Password'$new_password);  
  14. }  
  15. }  
  16. ?> 

Tags: php网站攻击 php防止刷流量

分享到: