4ndr34s
12-12-2009, 15:49
E' possibile che uno script in php possa bloccare degli attacchi ddos su un sito?
questo è il codice:<?php
$crlf=chr(13).chr(10);
$itime=3; //Minimum number of seconds between one-visitor visits
$imaxvisit=10; //Maximum visits in $itime x $imaxvisits seconds
$ipenalty=($itime * $imaxvisit); //Minutes for waitting
$iplogdir="./logs/";
$iplogfile="http.txt";
// Time
$today = date("Y-m-j,G");
$min = date("i");
$sec = date("s");
$r = substr(date("i"),0,1);
$m = substr(date("i"),1,1);
$minute = 0;
$to = 'balblala@asd.asdt';
$headers = 'From : Someone Tryed To DDoS.' . "\r\n";
$subject = "Warning Of Possible DDoS Attack At $today:$min:$sec";
//Warning Messages:
$message2='Please Try Again Later ... ';
//---------------------- End of Initialization ---------------------------------------
//Get file time:
$ipfile=substr(md5($_SERVER["REMOTE_ADDR"]),-3); // -3 means 4096 possible files
$oldtime=0;
if (file_exists($iplogdir.$ipfile)) $oldtime=filemtime($iplogdir.$ipfile);
//Update times:
$time=time();
if ($oldtime<$time) $oldtime=$time;
$newtime=$oldtime+$itime;
// Check human or bot:
if ($newtime>=$time+$itime*$imaxvisit)
{
// To block visitor:
touch($iplogdir.$ipfile,$time+$itime*($imaxvisit-1)+$ipenalty);
header("HTTP/1.0 503 Service Temporarily Unavailable");
header("Connection: close");
header("Content-Type: text/html");
echo '<html><head><title>--------</title></head><body><p align="center"><strong>'
.$message1.'</strong>'.$br;
echo $message2.$message3.$message4.$message6.'</p></body></html>';
// Mailing Warning Message To Owner
{
//@mail($to, $subject, $message5, $headers); /
}
// logging:
$fp=@fopen($iplogdir.$iplogfile,"a");
if ($fp!==FALSE)
{
$useragent='<unknown user agent>';
if (isset($_SERVER["HTTP_USER_AGENT"])) $useragent=$_SERVER["HTTP_USER_AGENT"];
@fputs($fp,$_SERVER["REMOTE_ADDR"].' on '.date("D, d M Y, H:i:s").' as '.$useragent.$crlf);
}
@fclose($fp);
exit();
}
//Modify file time:
touch($iplogdir.$ipfile,$newtime);
?>
questo è il codice:<?php
$crlf=chr(13).chr(10);
$itime=3; //Minimum number of seconds between one-visitor visits
$imaxvisit=10; //Maximum visits in $itime x $imaxvisits seconds
$ipenalty=($itime * $imaxvisit); //Minutes for waitting
$iplogdir="./logs/";
$iplogfile="http.txt";
// Time
$today = date("Y-m-j,G");
$min = date("i");
$sec = date("s");
$r = substr(date("i"),0,1);
$m = substr(date("i"),1,1);
$minute = 0;
$to = 'balblala@asd.asdt';
$headers = 'From : Someone Tryed To DDoS.' . "\r\n";
$subject = "Warning Of Possible DDoS Attack At $today:$min:$sec";
//Warning Messages:
$message2='Please Try Again Later ... ';
//---------------------- End of Initialization ---------------------------------------
//Get file time:
$ipfile=substr(md5($_SERVER["REMOTE_ADDR"]),-3); // -3 means 4096 possible files
$oldtime=0;
if (file_exists($iplogdir.$ipfile)) $oldtime=filemtime($iplogdir.$ipfile);
//Update times:
$time=time();
if ($oldtime<$time) $oldtime=$time;
$newtime=$oldtime+$itime;
// Check human or bot:
if ($newtime>=$time+$itime*$imaxvisit)
{
// To block visitor:
touch($iplogdir.$ipfile,$time+$itime*($imaxvisit-1)+$ipenalty);
header("HTTP/1.0 503 Service Temporarily Unavailable");
header("Connection: close");
header("Content-Type: text/html");
echo '<html><head><title>--------</title></head><body><p align="center"><strong>'
.$message1.'</strong>'.$br;
echo $message2.$message3.$message4.$message6.'</p></body></html>';
// Mailing Warning Message To Owner
{
//@mail($to, $subject, $message5, $headers); /
}
// logging:
$fp=@fopen($iplogdir.$iplogfile,"a");
if ($fp!==FALSE)
{
$useragent='<unknown user agent>';
if (isset($_SERVER["HTTP_USER_AGENT"])) $useragent=$_SERVER["HTTP_USER_AGENT"];
@fputs($fp,$_SERVER["REMOTE_ADDR"].' on '.date("D, d M Y, H:i:s").' as '.$useragent.$crlf);
}
@fclose($fp);
exit();
}
//Modify file time:
touch($iplogdir.$ipfile,$newtime);
?>