content top


Evitando Injection em PHP

Evitando Injection em PHP

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.


1 Comentário »

  1. avatar comment-top

    Muito sinistro você. Valew pela dica.

    comment-bottom

RSS feed for comments on this post. TrackBack URL

Leave a comment