quarta-feira, 29 de abril de 2009

PHP - Dicas de segurança contra SQL Injection

PHP - Dicas de segurança contra SQL Injection

Para evitar boa parte da vulnerabilidade escrevendo código PHP, vale estar atento as seguintes dicas:
 
Um dos principais problemas está nos tipos numericos que são concatenados as queries, use isso
 
$valor = intval(  $_GET["valor"]  );
ou
$valor = (int)  $_GET["valor"];
 
Para strings, procure nas funções do banco de dados que voce está usando, alguma função de ESCAPE, por exemplo:
 
Para postgresql tem a pg_escape_string
 
$sql = '"SELECT * FROM BLABLA WHERE NOME LIKE '%" . pg_escape_string( $_GET["nome"] ) . "%'";
 
Para mysql tem a mysql_escape_string
 
$sql = '"SELECT * FROM BLABLA WHERE NOME LIKE '%" . mysql_escape_string( $_GET["nome"] ) . "%'";
 

E uma mudança interessante pode atacar o problema na raiz
 
Crie um usuário de banco diferenciado com permissões limitadas as suas tarefas, se ele não precisa escrever em uma tabela, não deve ter permissão, provavelmente ele não precisa modificar estrutura, então sem permissão de CREATE, DROP etc... INSERT DELETE UPDATE só onde ele realmente precisa realizar as operações ... com isso, qualquer falha da sua aplicação que permita o cara executar comandos, só vai permitir que ele o faça nas poucas tabelas com permissão,

Com uma política de permissões bem definida, o estrago potencial é minimizado na raiz, ou seja, no próprio banco de dados.

----------------
 
Estude a possibilidade de usar um framework como o codeigniter por exemplo, frameworks resolvem na largada as principais vulnerabilidades


;-)
cjr

2 comentários:

Renato A A disse...

Fala Jr!

Quando codificamos do zero, o uso de um framework pode evitar a maior parte dos furos mais comuns, mas quando precisamos blindar (revisar & corrigir) uma aplicação feita por terceiros, a sugestão que deixo é usar o Bad Behavior que pode ser ativado via auto_prepend e trata de higienizar todos os requests que chegam na aplicação, removendo os tipos de ataques mais comuns de SQL Injection e XSS.

[ ] e bem-vindo de volta :)

Anônimo disse...

[url=http://www.ganar-dinero-ya.com][img]http://www.ganar-dinero-ya.com/ganardinero.jpg[/img][/url]
[b]Una gran guia de ganar dinero[/b]
Hemos hallado la mejor guia en internet de como trabajo casa. Como nos ha sido de utilidad a nosotros, tambien les puede ser de interes para ustedes. No son solo metodos de ganar dinero con su pagina web, hay todo tipo de formas para ganar dinero en internet...
[b][url=http://www.ganar-dinero-ya.com][img]http://www.ganar-dinero-ya.com/dinero.jpg[/img][/url]Te recomendamos entrar a [url=http://www.ganar-dinero-ya.com/]Ganar dinero[/url][url=http://www.ganar-dinero-ya.com][img]http://www.ganar-dinero-ya.com/dinero.jpg[/img][/url][/b]