Да банва потребител

haus

Registered
Искам да попитам как да направя като някои потребител се опита да хакне саита ми да го банне и неговата атака да бъде записана във txt документ
 
слагаш това файлче някъде и се кефи :P
PHP:
<?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,"@")) { 
$loc = $_SERVER['PHP_SELF']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$date = date ("d-m-Y @ h:i:s"); 
$lfh = "../log.txt"; 
$log = fopen ( $lfh,"a+" ); 
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n"); 
fclose($log); 
echo "<br><center><font color=white>Вашата атака е деактивирана и записана успешно!</font><center><br>"; 
} 
?>
:)
 
Направи си и една проверка да видиш дали потребителя е баннат и това е всичко :?:

PHP:
<?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");
	$query = mysql_query ("INSERT INTO table_name (date, ip, loc, queryString) VALUES ('$date', '$ip', '$loc', '$queryString')");
	echo "<font color=\"red\"><center><b>Вашата атака е деактивирана и записана успешно! <br /><br />
	Attack Date: $date<br />
	Attacker IP: $ip<br />
	Attack: $loc?=$queryString <br /><br />
	<h1>ATTACKER $IP</h1><br /></b></center></font>";
}
?>

[sql]CREATE TABLE table_name(
id(10) unsigned NOT NULL auto_increment,
date varchar(255) NOT NULL,
ip varchar(255) NOT NULL,
loc varchar(255) NOT NULL,
queryString varchar(255) NOT NULL,
PRIMARY KEY (ban_id),
KEY id (id)
);[/sql]
 
Праскаш кода примерно в zashtita.php / security.php и го includ-ваш най-отгоре. След като файла има връзка с базата данни всичко ти е готово :P

После си правиш една проверка дали потребителя, го има в базата т.е.:


PHP:
$ip = $_SERVER['REMOTE_ADDR'];
if ($query= mysql_fetch_array(mysql_query("SELECT * FROM `table_name` WHERE ip='$ip'"))){
	echo "Вие сте баниран поради опит за хакване на сайта!";
}
 
Не е ли по-добре да си защитиш сайта отколкото да блокираш IP-та ... ?

Този код strstr($queryString,"+") , ако в сайта има новини и/или нещо друго, което се изкарва по подобен начин :

http://web.com/novini.php?ime=tema+info

няма ли пак да блокира IP адреса ?
 
LiOL каза:
Не е ли по-добре да си защитиш сайта отколкото да блокираш IP-та ... ?

Този код strstr($queryString,"+") , ако в сайта има новини и/или нещо друго, което се изкарва по подобен начин :

http://web.com/novini.php?ime=tema+info

няма ли пак да блокира IP адреса ?

Редовете се трият лесно, но сайта се защитава трудно, ако не е на долу-горе с Уеб програмирането или каквото щеш. Ако собственика не знае как да се защити, тогава ще се поинтересува, ако въобще му пука ;)
 

Back
Горе