浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013-06-18 00:00
851 查看
废话不多说,上代码
<?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fileht)) file_put_contents($fileht,""); $filehtarr=@file($fileht); if(in_array($ip."\r\n",$filehtarr)) die("Warning:"."<br>"."Your IP address are forbided by some reason, IF you have any question Pls emill to shop@mydalle.com!"); //加入禁止IP $time=time(); $fileforbid="log/forbidchk.dat"; if(file_exists($fileforbid)) { if($time-filemtime($fileforbid)>60) unlink($fileforbid); else { $fileforbidarr=@file($fileforbid); if($ip==substr($fileforbidarr[0],0,strlen($ip))) { if($time-substr($fileforbidarr[1],0,strlen($time))>600) unlink($fileforbid); elseif($fileforbidarr[2]>600) { file_put_contents($fileht,$ip."\r\n",FILE_APPEND); unlink($fileforbid); } else { $fileforbidarr[2]++; file_put_contents($fileforbid,$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("Y-m-d H:i:s",time())."--".$uri."\r\n",FILE_APPEND); $timepass=$timetem+$allowTime-$time; die("Warning:"."<br>"."Sorry,you are forbided by refreshing frequently too much, Pls wait for ".$timepass." seconds to continue!"); } } } } if($yesno) $str.=$checkip.$checkuri.$time."1\r\n"; file_put_contents($file,$str); ?>
相关文章推荐
- 浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
- PHP程序防止ddos,dns,集群服务器攻击
- PHP程序防止ddos,dns,集群服务器攻击
- PHP程序防止ddos,dns,集群服务器攻击
- fsockopen函数容易被PHPDDOS利用攻击被禁用,部分程序不正常的解决办法
- php防止ddos,dns,集群攻击的实现代码
- php防止ddos,dns,集群攻击的实现代码
- [PHP]php程序(warning)警告,解决办法贴出来
- 浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
- PHP安全之以CGI 模式安装时可能遇到的攻击及解决办法
- 运行PHP程序时提示“Notice: Undefined index”的解决办法
- PHP安全之以Apache模式安装时可能遇到的攻击及解决办法
- ASP防SQL注入攻击程序解决办法
- PHP中使用foreach和引用导致程序BUG及解决办法
- php程序中不能使用mb_开头的函数解决办法
- idhttp post 出现exception class EIdSocketError with message 'Socket Error # 10054的解决办法(捕捉异常,防止程序挂掉)
- DDOS几种常见攻击方式的原理及解决办法
- 安装PHP程序出现mysql支持off on不支持解决办法(转)
- Unable to load dynamic library ...\php_oci8.dll' - %1 不是有效的 Win32 程序解决办法总结
- php程序上传网站logo出现错误解决办法