php防止ddos,dns,集群攻击的实现代码

WBOY
发布: 2016-07-25 08:58:34
原创
944 人浏览过
  1. /**
  2. * 防止ddos、dns、集群等攻击
  3. * edit bbs.it-home.org
  4. */
  5. //查询禁止IP
  6. $ip =$_SERVER['REMOTE_ADDR'];
  7. $fileht=".htaccess2";
  8. if(!file_exists($fileht))
  9. file_put_contents($fileht,"");
  10. $filehtarr=@file($fileht);
  11. if(in_array($ip."\r\n",$filehtarr))
  12. die("Warning:"."
    "."Your IP address are forbided by some reason, IF you have any question Pls emill to shop@jbxue.com!");
  13. //加入禁止IP
  14. $time=time();
  15. $fileforbid="log/forbidchk.dat";
  16. if(file_exists($fileforbid)) {
  17. if($time-filemtime($fileforbid)>60)
  18. unlink($fileforbid);
  19. else {
  20. $fileforbidarr=@file($fileforbid);
  21. if($ip==substr($fileforbidarr[0],0,strlen($ip))) {
  22. if($time-substr($fileforbidarr[1],0,strlen($time))>600)
  23. unlink($fileforbid);
  24. elseif($fileforbidarr[2]>600) {
  25. file_put_contents($fileht,$ip."\r\n",FILE_APPEND);
  26. unlink($fileforbid);
  27. } else {
  28. $fileforbidarr[2]++;
  29. file_put_contents($fileforbid,$fileforbidarr);
  30. }
  31. }
  32. }
  33. }
  34. //防刷新
  35. $str="";
  36. $file="log/ipdate.dat";
  37. if(!file_exists("log")&&!is_dir("log"))
  38. mkdir("log",0777);
  39. if(!file_exists($file))
  40. file_put_contents($file,"");
  41. $allowTime = 120;//防刷新时间
  42. $allowNum=10;//防刷新次数
  43. $uri=$_SERVER['REQUEST_URI'];
  44. $checkip=md5($ip);
  45. $checkuri=md5($uri);
  46. $yesno=true;
  47. $ipdate=@file($file);
  48. foreach($ipdate as $k=>$v) {
  49. $iptem=substr($v,0,32);
  50. $uritem=substr($v,32,32);
  51. $timetem=substr($v,64,10);
  52. $numtem=substr($v,74);
  53. if($time-$timetemif($iptem!=$checkip)
  54. $str.=$v;
  55. else {
  56. $yesno=false;
  57. if($uritem!=$checkuri)
  58. $str.=$iptem.$checkuri.$time."1\r\n";
  59. elseif($numtem$str.=$iptem.$uritem.$timetem.($numtem+1)."\r\n";
  60. else {
  61. if(!file_exists($fileforbid)) {
  62. $addforbidarr=array($ip."\r\n",time()."\r\n",1);
  63. file_put_contents($fileforbid,$addforbidarr);
  64. }
  65. file_put_contents("log/forbided_ip.log",$ip."--".date("Y-m-d H:i:s",time())."--".$uri."\r\n",FILE_APPEND);
  66. $timepass=$timetem+$allowTime-$time;
  67. die("Warning:"."
    "."Sorry,you are forbided by refreshing frequently too much, Pls wait for ".$timepass." seconds to continue!");
  68. }
  69. }
  70. }
  71. }
  72. if($yesno) $str.=$checkip.$checkuri.$time."1\r\n";
  73. file_put_contents($file,$str);
  74. ?>
复制代码


相关标签:
dns
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!