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