Sql Inject Detect. Auto Ban IP!

Evanescence

Registered
Искам да попитам как мога да банвам ип-та които са се опитвали да хакват през "гет , пост". Искам ип-тата да ги записва в 1 текстов файл след това да се вземат тези ип-та от този текстов файл и да се блокират автоматично не да не налагам аз да пиша ип-тата 1 по 1. Ако някои знае как може да стане с htaccess или с php ..... да помогне ако може Smile Благодаря предварително за отделеното време и помоща.
 
Ето ти кода и за .htaccess, само трябва да махнеш // пред кодовете, но тогава няма да има смисъл от сял заявката. Този код го include във файловете, който искаш или по-точно имаш $_GET или $_POST заявки. Аз съм малко по-брутален и бих си написал на ново скрипт направо да реже достъпа с iptables на атакуващия, но ще трябва да се напише още един код, който да взима информацията от .txt файла, а там например да е въведен само ip aдреса на атакуващия.

Успех! :)

Код:
<?php
$queryString = strtolower($_SERVER['QUERY_STRING']); 
if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR 
strstr($queryString,"..") OR 
strstr($queryString,"%") OR 
strstr($queryString,"*") OR 
strstr($queryString,"+") OR 
strstr($queryString,"!") OR 
strstr($queryString,"-1") OR 
strstr($queryString,"--") OR
strstr($queryString,"UNION") OR 
strstr($queryString,"DROP") OR 
strstr($queryString,"@")) { 
$loc = $_SERVER['PHP_SELF']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$date = date ("d-m-Y @ h:i:s"); 
$lfh = "./loged.txt"; 
$log = fopen ( $lfh,"a+" ); 
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n"); 
fclose($log);

//htaccess banned
//$htacc = ".htaccess";
//$ban_htaccess = fopen ($htacc, "a+");
//fputs ($ban_htaccess, "deny from $ip\n");
//fclose ($ban_htaccess);
//close

echo "<center>Вашата атака е деактивирана и записана успешно!<br />
<h1>$ip</h1><center>";
$moeto_ip = $_SERVER['REMOTE_ADDR'];
$reason = "Опит за хакване";
$time = time();//timestamp
$izticha = $time+(3*604800);//изчисляваме до кога ще е валиден бан-а
$vid = 1;
mysql_query("INSERT INTO `bans` (ip, reason, slojen, izticha, vid) VALUES('$moeto_ip','$reason', '$time','$izticha','$vid')"); 
die();
}
?>

за .htaccess
Код:
<?php
$queryString = strtolower($_SERVER['QUERY_STRING']); 
if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR 
strstr($queryString,"..") OR 
strstr($queryString,"%") OR 
strstr($queryString,"*") OR 
strstr($queryString,"+") OR 
strstr($queryString,"!") OR 
strstr($queryString,"-1") OR 
strstr($queryString,"--") OR
strstr($queryString,"UNION") OR 
strstr($queryString,"DROP") OR 
strstr($queryString,"@")) { 
$loc = $_SERVER['PHP_SELF']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$date = date ("d-m-Y @ h:i:s"); 
$lfh = "./loged.txt"; 
$log = fopen ( $lfh,"a+" ); 
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n"); 
fclose($log);

//htaccess banned
$htacc = ".htaccess";
$ban_htaccess = fopen ($htacc, "a+");
fputs ($ban_htaccess, "deny from $ip\n");
fclose ($ban_htaccess);
//close


$ip = $_SERVER['REMOTE_ADDR']; 
echo "<center>Вашата атака е деактивирана и записана успешно!<br />
<h1>$ip</h1><center>";

}
?>

sql.sql
Код:
CREATE TABLE IF NOT EXISTS `bans` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(50) NOT NULL default '',
  `reason` text  NOT NULL,
  `slojen` varchar(50) NOT NULL default '',
  `izticha` varchar(50) NOT NULL default '',
  `vid` varchar(2) NOT NULL default '',
  `url` text NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM ;
 

Back
Горе