设为首页 - 加入收藏 - 网站地图 SecYe安全 Www.SecYe.Com - 国内网络信息安全IT技术门户网
当前位置:SecYe > 网络编程 > PHP > 正文

PHP 防止刷流量攻击

时间:2017-03-15 08:57 来源:本站整理 作者:SecYe安全 阅读:


 
 
  <?php 
 

 
  //查询禁止IP 
 

 
  $ ip = $ _ SERVER ['REMOTE_ADDR']; 
 

 
  $ fileht =“。htaccess2”; 
 

 
  如果的file_put_contents($ fileht,“”)(file_exists($ fileht)!); 
 

 
  $ filehtarr = @ file($ fileht); 
 

 
  如果(in_array($ IP为“\ r \ n”,$ filehtarr))死亡(“警告”。“结果”,“您的IP地址是由某种原因forbided,如果您有任何问题请埃米尔·店@ mydalle.com!“);
 

 
  //加入禁止IP 
 

 
  $ time = time(); 
 

 
  $ fileforbid =“log / forbidchk.dat”; 
 

 
  if(file_exists($ fileforbid))
 

 
  {if($ time-filemtime($ fileforbid)> 60)unlink($ fileforbid); 
 

 
  else { 
 

 
  $ fileforbidarr = @ file($ fileforbid); 
 

 
  如果($知识产权== SUBSTR($ fileforbidarr [0],0,strlen的($ IP)))
 

 
  { 
 

 
  如果($时间SUBSTR($ fileforbidarr [1],0,strlen的($时间))> 600)取消( $ fileforbid); 
 

 
  elseif($ fileforbidarr [2]> 600){file_put_contents($ fileht,$ ip。“\ r \ n”,FILE_APPEND); unlink($ fileforbid);} 
 

 
  else {$ fileforbidarr [2] ++; file_put_contents ,$ fileforbidarr);} 
 

 
  } 
 

 
  } 
 

 
  } 
 

 
  //防刷新
 

 
  $ str =“”; 
 

 
  $ file =“log / ipdate.dat”; 
 

 
  if(!file_exists(“log”)&&!is_dir(“log”))mkdir(“log”,0777); 
 

 
  if(!file_exists($ file))file_put_contents($ file,“”); 
 

 
  $ allowTime = 120; //防刷新时间
 

 
  $ allowNum = 10; //防刷新次数
 

 
  $ uri = $ _ SERVER ['REQUEST_URI']; 
 

 
  $ checkip = md5($ ip); 
 

 
  $ checkuri = md5($ uri); 
 

 
  $ yesno = true; 
 

 
  $ ipdate = @ file($ file); 
 

 
  foreach($ ipdate as $ k => $ v)
 

 
  {$ iptem = substr($ v,0,32); 
 

 
  $ uritem = substr($ v,32,32); 
 

 
  $ timetem = substr($ v,64,10); 
 

 
  $ numtem = substr($ v,74); 
 

 
  if($ time- $ timetem <$ allowTime){ 
 

 
  if($ iptem!= $ checkip)$ str。= $ v; 
 

 
  else { 
 

 
  $ yesno = false; 
 

 
  if($ uritem!= $ checkuri)$ str。= $ iptem。$ checkuri。$ time。“1 \ r \ n”; 
 

 
  elseif($ numtem <$ allowNum)$ str。= $ iptem。$ uritem。$ timetem。($ numtem + 1)。“\ r \ n”; 
 

 
  else 
 

 
  { 
 

 
  if(!file_exists($ fileforbid)){$ addforbidarr = array($ ip。“\ r \ n”,time()“\ r \ n”,1); file_put_contents($ fileforbid,$ addforbidarr) } 
 

 
  file_put_contents(“log / forbided_ip.log”,$ ip。“ - ”。date(“Ymd H:i:s”,time())。“ - ”。$ uri。“\ r \ n” FILE_APPEND); 
 

 
  $ timepass = $ timetem + $ allowTime- $ time; 
 

 
  (“警告:”,“<br>”。“对不起,你经常刷新太多,Pls等待”。$ timepass。“秒继续!
 

 
  } 
 

 
  } 
 

 
  } 
 

 
  } 
 

 
  if($ yesno)$ str。= $ checkip。$ checkuri。$ time。“1 \ r \ n”; 
 

 
  file_put_contents($ file,$ str);
 

 
  
 


 

本文来源:SecYe安全网[http://www.secye.com] (责任编辑:SecYe安全)

点击复制链接 与好友分享!

顶一下
(0)
0%
踩一下
(0)
0%