PHP程序防止ddos,dns,集群服务器攻击
[代码] ddos,dns,集群服务器攻击QQ33258影子可以测试满意担保
001 |
002 |
<?php |
003 |
004 |
//查询禁止IP |
005 |
006 |
$ip =$_SERVER[ 'REMOTE_ADDR' ]; |
007 |
008 |
$fileht= ".htaccess2" ; |
009 |
010 |
if (!file_exists($fileht))file_put_contents($fileht, "" ); |
011 |
012 |
$filehtarr=@ file ($fileht); |
013 |
014 |
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!" ); |
015 |
016 |
|
017 |
018 |
//加入禁止IP |
019 |
020 |
$ time = time (); |
021 |
022 |
$fileforbid= "log/forbidchk.dat" ; |
023 |
024 |
if (file_exists($fileforbid)) |
025 |
026 |
{ if ($ time -filemtime($fileforbid)>60)unlink($fileforbid); |
027 |
028 |
else { |
029 |
030 |
$fileforbidarr=@ file ($fileforbid); |
031 |
032 |
if ($ip==substr($fileforbidarr[0],0,strlen($ip))) |
033 |
034 |
{ |
035 |
036 |
if ($ time -substr($fileforbidarr[1],0,strlen($ time ))>600)unlink($fileforbid); |
037 |
038 |
elseif($fileforbidarr[2]>600){file_put_contents($fileht,$ip. "\r\n" ,FILE_APPEND);unlink($fileforbid);} |
039 |
040 |
else {$fileforbidarr[2]++;file_put_contents($fileforbid,$fileforbidarr);} |
041 |
042 |
} |
043 |
044 |
} |
045 |
046 |
} |
047 |
048 |
//防刷新 |
049 |
050 |
$str= "" ; |
051 |
052 |
$ file = "log/ipdate.dat" ; |
053 |
054 |
if (!file_exists( "log" )&&!is_dir( "log" )) mkdir ( "log" ,0777); |
055 |
056 |
if (!file_exists($ file ))file_put_contents($ file , "" ); |
057 |
058 |
$allowTime = 120;//防刷新时间 |
059 |
060 |
$allowNum=10;//防刷新次数 |
061 |
062 |
$uri=$_SERVER[ 'REQUEST_URI' ]; |
063 |
064 |
$checkip=md5($ip); |
065 |
066 |
$checkuri=md5($uri); |
067 |
068 |
$yesno= true ; |
069 |
070 |
$ipdate=@ file ($ file ); |
071 |
072 |
foreach($ipdate as $k=>$ v ) |
073 |
074 |
{ $iptem=substr($ v ,0,32); |
075 |
076 |
$uritem=substr($ v ,32,32); |
077 |
078 |
$timetem=substr($ v ,64,10); |
079 |
080 |
$numtem=substr($ v ,74); |
081 |
082 |
if ($ time -$timetem<$allowTime){ |
083 |
084 |
if ($iptem!=$checkip)$str.=$ v ; |
085 |
086 |
else { |
087 |
088 |
$yesno= false ; |
089 |
090 |
if ($uritem!=$checkuri)$str.=$iptem.$checkuri.$ time . "1\r\n" ; |
091 |
092 |
elseif($numtem<$allowNum)$str.=$iptem.$uritem.$timetem.($numtem+1). "\r\n" ; |
093 |
094 |
else |
095 |
096 |
{ |
097 |
098 |
if (!file_exists($fileforbid)){$addforbidarr=array($ip. "\r\n" , time (). "\r\n" ,1);file_put_contents($fileforbid,$addforbidarr);} |
099 |
100 |
file_put_contents( "log/forbided_ip.log" ,$ip. "--" . date ( "Y-m-d H:i:s" , time ()). "--" .$uri. "\r\n" ,FILE_APPEND); |
101 |
102 |
$timepass=$timetem+$allowTime-$ time ; |
103 |
104 |
die( "Warning:" . "<br>" . "Sorry,you are forbided by refreshing frequently too much, Pls wait for " .$timepass. " seconds to continue!" ); |
105 |
106 |
} |
107 |
108 |
} |
109 |
110 |
} |
111 |
112 |
} |
113 |
114 |
if ($yesno) $str.=$checkip.$checkuri.$ time . "1\r\n" ; |
115 |
116 |
file_put_contents($ file ,$str); |
117 |
118 |
?> |