Ano passado postei um script que tratava strings no GET com codigos maliciosos:
http://www.coisasuteis.com.br/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.
RSS feed for comments on this post. TrackBack URL
6 de agosto de 2009 as 2:14
Muito sinistro você. Valew pela dica.