Ano passado postei um script que tratava strings no GET com codigos maliciosos:
http://www.dicastech.net/2008/12/evitando-injection-em-includes-php/
Porem ela não estava 100% blindada, na empresa que trabalho Phoneclub desenvolvemos uma nova versão desse script agora tratando variaveis do GET e POST.
Segue:
//Função para tratamento da string:
function anti_injection($sql)
{
// remove palavras que contenham sintaxe sql
$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|*|--|\\)/"),"",$sql);
$sql = trim($sql);//limpa espaços vazio
$sql = strip_tags($sql);//tira tags html e php
$sql = addslashes($sql);//Adiciona barras invertidas a uma string
return $sql;
}
//Chamada da função, recomendo colocar no inicio de todas paginas:
foreach ($_GET as $chaveGet => $valorGet)
{
$valorFiltrado = anti_injection($valorGet);
eval("$" . $chaveGet . " = "" . $valorFiltrado . "";");
$_GET[$chaveGet] = $valorFiltrado;
}
foreach ($_POST as $chavePost => $valorPost)
{
$valorFiltrado = anti_injection($valorPost);
eval("$" . $chavePost . " = "" . $valorFiltrado . "";");
$_POST[$chavePost] = $valorFiltrado;
}
Qualquer sugestão será bem vinda.
Muito sinistro você. Valew pela dica.