ホームページ  >  記事  >  バックエンド開発  >  PHP での Web サイトの IP 攻撃対策コード、超実践的な PHP チュートリアル

PHP での Web サイトの IP 攻撃対策コード、超実践的な PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:34:11904ブラウズ

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

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

//禁止されたIPをクエリします
$ip =$_SERVER['REMOTE_ADDR'];
$fileht=".htaccess2"; (!file_exists ($fileht))file_put_contents($fileht,"");
$filehtarr=@file($fileht);
if(in_array($ip."rn",$filehtarr))die("警告:" ."< ;br>"."あなたの IP アドレスは何らかの理由で禁止されています。質問がある場合は shop@mydalle.com までお問い合わせください!");
$fileforbid ="log/forbidchk.dat";
if(file_exists($fileforbid))
{ if($time-filemtime($fileforbid)>60)unlink($fileforbid);
$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 ;//アンチリフレッシュ時間
$allowNum=10;//アンチリフレッシュ時間
$uri=$_SERVER['REQUEST_URI'];
$checkip=md5($ip); ($uri);
$yesno=true;
$ipdate=@file($file);
foreach($ipdate as $k=>$v)
{ $iptem=substr($v,0,32) ;
$uritem=substr($v,32,32);
$numtem=substr($v,74); $allowTime){
if ($iptem!=$checkip)$str.=$v;
else{
$yesno=false;
if($uritem!=$checkuri)$str.=$iptem.$checkuri. $time."1rn" ;
elseif($numtemelse
{
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);
die("警告: "."
"."申し訳ありませんが、頻繁に更新することは禁止されています。続行するには ".$timepass." 秒待ってください!"); }
if($yesno ) $str.=$checkip.$checkuri.$time."1rn";
file_put_contents($file,$str);


PHPの先頭にプログラムを組み込みます。処理されるファイル。
プログラムはまず IP が禁止リストに含まれているかどうかを判断し、含まれている場合は終了します。
それ以外の場合、IP が監視リストに含まれており、10 分以内に 600 回以上クリックされると、その IP は禁止リストに追加されます。
時間と回数を超えていない場合は、数値が1ずつ増加します。同時に、IPが同じページで頻繁に動作するかどうかを監視します。
マシンリフレッシュなのでプログラムはセッションごとに判断する必要がありません。
また、アップデートの際、ファイルを排他的に処理することはできません。
擬似静的 IP ストレージを使用するとエラーが発生します。
このプログラムにはまだ変更と改善の余地があります。QQ ファームのダウングレード原則も参照できます。基本的に、ファームもこの原則に従って開発されています。



http://www.bkjia.com/PHPjc/322504.html
www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/322504.html

技術記事

今日、私は次のコードを開発しました。これは成功したと考えられます。1 日で 15 個の IP をインターセプトし、サーバーの負荷は正常でした。 コードをコピーする コードは次のとおりです: ?php //禁止された IP をクエリ $ip =$_SERVER['REMOTE_ADD...

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