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.


Feed RSS para comentários sobre este post. TrackBack URL

Deixe um comentário


1 Comentário »



  1. avatar comment-top
    Google Chrome 2.0.172.39 Google Chrome 2.0.172.39 Windows XP Windows XP
    Muito sinistro você. Valew pela dica.
    comment-bottom