Evitando Injection em PHP

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.

1 Comment

Leave a Reply

Seu e-mail não será publicado.


*