Ciao a tutti ho realizzato un piccolo script che analizzando la querystring scrive tutto in un file di log.Inoltre nel caso in cui l'utente usa dei comandi pericolosi [tipo: union,select etc...] viene bloccato...
Il codice è questo:
Codice PHP:
<?php
// per ottenere l'url che ha generato l'errore
$where = "http://$HTTP_HOST$REQUEST_URI";
$ip= $_SERVER['REMOTE_ADDR'];
$query_string= $_SERVER['QUERY_STRING'];
$http_referrer= $_SERVER['HTTP_REFERER'];
$date=getdate();
$sec=$date['seconds'];
$min=$date['minutes'];
$hor=$date['hours'];
$mday=$date['mday'];
$mon=$date['mon'];
$year=$date['year'];
if (isset($where)) {
$filename= "/web/htdocs/www.tuosito.it/home/logsite/log.txt";
$content="$where || $ip || $mday/$mon/$year || $hor:$min:$sec ";
$fpx = fopen ($filename, "w");
$fw=fwrite ($fpx, $content);
fclose ($fpx);
}
if (stristr($query_string,'+union+') OR stristr($query_string,'%20union%20') OR
stristr($query_string,'*/union/*') OR stristr($query_string,' union ') )
{
echo "Hai utilizzato il comando sql UNION";
exit();
}
if (stristr($query_string,'+select+') OR stristr($query_string,'%20select%20') OR
stristr($query_string,'*/select/*') OR stristr($query_string,' select ') )
{
echo "Hai utilizzato il comando sql SELECT";
exit();
}
if (stristr($query_string,'+delete+') OR stristr($query_string,'%20delete%20') OR
stristr($query_string,'*/delete/*') OR stristr($query_string,' delete ') )
{
echo "Hai utilizzato il comando sql DELETE";
exit();
}
if (stristr($query_string,'+drop+') OR stristr($query_string,'%20drop%20') OR
stristr($query_string,'*/drop/*') OR stristr($query_string,' drop ') )
{
echo "Hai utilizzato il comando sql DROP";
exit();
}
if (stristr($query_string,'+insert+') OR stristr($query_string,'%20insert%20') OR
stristr($query_string,'*/insert/*') OR stristr($query_string,' insert ') )
{
echo "Hai utilizzato il comando sql INSERT";
exit();
}
?>
Il problema è che scrivendo sul file viene sovrascritta sempre una sola riga quindi posso visualizzare soltanto l'ultima query_string usata dall'utente!!
Ed inoltre nn riesce a bloccare l'utente,cioè anche se uso union,select etc.. non mi scrive il messaggio di errore!!
Come posso risolvere? ciao e grazie