ホームページ >php教程 >php手册 >PHP での Web サイト向けの IP 攻撃対策コード、非常に実用的

PHP での Web サイト向けの IP 攻撃対策コード、非常に実用的

WBOY
WBOYオリジナル
2016-06-21 08:56:20760ブラウズ

今日、私は次のコードを開発しました。これは成功したと考えられます。1 日で 15 個の IP をインターセプトし、サーバーの負荷は正常でした。

コードをコピー コードは次のとおりです:


//禁止された IP をクエリ
$ip =$_SERVER['REMOTE_ADDR']
$fileht=".htaccess2"; ))file_put_contents($fileht,"");
$filehtarr=@file($fileht);
if(in_array($ip."rn",$filehtarr))die("警告:"."
"."あなたの IP アドレスは何らかの理由で禁止されています。ご質問がある場合は shop@mydalle.com までお問い合わせください!");

//禁止された IP を追加
$time= time();
$fileforbid="log/forbidchk.dat";
if(file_exists($fileforbid))
{ if($time-filemtime($fileforbid)>60)unlink($ファイル禁止);
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."rn",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; -refresh Time
$allowNum=10; //アンチリフレッシュ回数
$uri=$_SERVER['REQUEST_URI'];
$checkip=md5($ip); =md5($uri );
$ipdate=@file($file);
foreach($ipdate as $k=>$v)
{ $iptem =substr($v,0,32);
$uritem=substr($v,32,32);
$timetem=substr($v,64,10); ($v,74 );
if($time-$timetem<$allowTime){
if($iptem!=$checkip)$str.=$v;
else{
$はいいいえ = false;
if($uritem!=$checkuri)$str.=$iptem.$checkuri.$time."1rn";
elseif($numtem<$allowNum)$str.=$iptem .$uritem.$ timetem.($numtem+1)."rn";
else
{
if(!file_exists($fileforbid)){$addforbidarr=array($ip."rn") ,time(). "rn",1);file_put_contents($fileforbid,$addforbidarr);}
file_put_contents("log/forbided_ip.log",$ip."--".date("Y-m-d H:i) :s",time ())."--".$uri."rn",FILE_APPEND);
$timepass=$timetem+$allowTime-$time;
die("警告:"."< ;br>". "申し訳ありませんが、頻繁に更新することは禁止されています。続行するには ".$timepass." 秒間お待ちください!");
}
}
}
}
if($ yesno) $str.=$checkip.$checkuri.$time."1rn";
file_put_contents($file,$str);

;
処理対象のphpファイルの先頭にプログラムをインクルードします。
プログラムはまず IP が禁止リストに含まれているかどうかを判断し、含まれている場合は終了します。
それ以外の場合、IP が監視リストに含まれており、10 分以内に 600 回以上クリックされると、その IP は監視リストに追加されます。禁止リスト。
時間と回数を超えていない場合は、数値を 1 つ増やします。同時に、IP が同じページで頻繁に動作するかどうかを監視します。

マシンフラッシュなのでプログラムがセッションを判定する必要がありません。
また、アップデートの際、ファイルを排他的に処理することはできません。
擬似静的ストレージ IP を使用するとエラーが発生します。
このプログラムにはまだ変更と改善の余地があります。QQ ファームのダウングレード原則も参照できます。基本的に、ファームもこの原則に従って開発されています。




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。