Felizmente nunca mais vi nenhum script com aberrações anti-sql-injection, mas há algum tempo era possível encontrar pessoas removendo palavras-chave de SQL de todas as strings que íam para o banco de dados. Se o usuário digitasse palavras como select, delete ou drop, elas eram simplesmente removidas da frase. Isso quando o programador não interrompia o script e acusava o usuário de estar tentando explorar alguma falha de segurança. Eu juro, isso existia.
Ao trabalhar com PDO, a melhor opção (pra não dizer a única!) é utilizar prepare e execute pra separar a query em si dos seus parâmetros:
1
2
3
4
5
6
7
8
9
10
11
12
| $conexao = new PDO( 'mysql:dbname=banco;host=localhost' , 'login' , 'senha' ); $uf = 'RJ' ; $idade = 18; $sth = $conexao ->prepare( 'SELECT nome FROM pessoa WHERE uf = ? AND idade > ?' ); $sth ->execute( array ( $uf , $idade )); while ( $row = $sth ->fetch() ) { echo $row [ 'nome' ]; } |
Fonte: http://www.phpit.com.br/artigos/7-coisas-simples-em-php-que-alguns-ainda-complicam.phpit
Comentários
Postar um comentário