le due funzioni le metti prima di include "config.php", lasci i filtri esistenti per tutte le variabili interessate del form, aggiungi quindi i nuovi controlli:
Codice PHP:
<?php
function isValidURI( $sURI ){
//l'er valido è questo:
$er = "/^((http):\/\/|[w]{3}[0-9]{0,1}\.)([a-zA-Z0-9]([a-zA-Z0-9\-_]+\.|[a-zA-Z0-9\-_]+|)+[a-zA-Z0-9]\.[a-zA-Z]{2,6})(:[0-9]{1,5}|)(\/.{0,1024}|)$/i";
//$er = "~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~";
return (bool) preg_match($er, $sURI);
}
function validEmail($aEmail)
{
$filter_email = "^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,4}$";
if (preg_match($filter_email, $aEmail))
return true;
else
return false;
}
include "config.php";
$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db ($db_name) or die ("Cannot connect to database");
//controllo anti-hackers by eurosalute
//puoi applicare questo filtro anche alle altre variabili
$void_mes=0;
$void_www=0;
$void_nome=0;
$void_email=0;
if (isset($HTTP_POST_VARS[message]))
{
$mes_id = $HTTP_POST_VARS[message];
$void_mes += substr_count($mes_id,"[url]");
$void_mes += substr_count($mes_id,"[/url]");
$void_mes += substr_count($mes_id,"sesso");
$void_mes += substr_count($mes_id,"sex");
$void_mes += substr_count($mes_id,"/*");
$void_mes += substr_count($mes_id,"viagra");
$void_mes += substr_count($mes_id,"../");
$void_mes += substr_count($mes_id,"cgi");
$void_mes += substr_count($mes_id,"prozac");
$void_mes += substr_count($mes_id,"<");
$void_mes += substr_count($mes_id,">");
$void_mes += substr_count($mes_id,"href");
$void_mes += substr_count($mes_id,"=");
}
//aggiungi qui il controllo messaggio vuoto:
if (empty($HTTP_POST_VARS[message])) $void_mes +=1;
if (isset($HTTP_POST_VARS[www]))
{
$www_id = $HTTP_POST_VARS[www];
$void_www += substr_count($www_id,".gif");
$void_www += substr_count($www_id,".jpg");
$void_www += substr_count($www_id,".png");
$void_www += substr_count($www_id,".jpeg");
$void_www += substr_count($www_id,".bmp");
$void_www += substr_count($www_id,".tiff");
$void_www += substr_count($www_id,".tga");
$void_www += substr_count($www_id,".miff");
$void_www += substr_count($www_id,".xcf");
//filtro standard :
$void_www += substr_count($www_id,"ftp");
$void_www += substr_count($www_id,"@");
$void_www += substr_count($www_id,"/*");
$void_www += substr_count($www_id,"./");
$void_www += substr_count($www_id,"../");
$void_www += substr_count($www_id,"www.geologue.setif.org/vb/member.php?u=3598");
$void_www += substr_count($www_id,"posterous.com/people/5AvFOOTLnQD7");
}
//aggiungi qui il controlli uri:
if ( isValidURI( $_POST[www] ) === false ) $void_www +=1;
//e così via per gli altri controlli
if (isset($HTTP_POST_VARS[email]))
{
$email_id = $HTTP_POST_VARS[email];
$void_email += substr_count($email_id,"http://");
$void_email += substr_count($email_id,"@berkley.com");
$void_email += substr_count($email_id,".edu");
}
if ( validEmail($_POST[email]) == false ) $void_email +=1;
poi se non vuoi codice dannoso , fai un controllo globale delle variabili del form (quancuno potrebbe inserire codice html, php , asp):
http://php.net/manual/en/function.strip-tags.php
Codice PHP:
foreach(array('message','www','nome','email') as $key) {$_POST[$key] = strip_tags($_POST[$key]);}