Bobby Tables: A guide to preventing SQL injection (Português)
Why did Bobby”s school lose their records?
a escola aparentemente armazena os nomes de seus alunos em uma tabela chamada de estudantes. Quando um novo aluno chega, a escola insere o seu nome nesta mesa. O código que faz a inserção pode ser o seguinte:
a primeira linha cria uma cadeia contendo uma instrução SQL inserir. O conteúdo da variável $studentName
é colado na declaração SQL., A segunda linha envia a declaração SQL resultante para a base de dados. The pitfall of this code is that outside data, in this case the content of $studentName
, becomes part of the SQL statement.
primeiro vamos “ver como é a declaração SQL se inserirmos um estudante chamado John:
isto faz exatamente o que queremos: insere John na tabela de estudantes.
agora inserimos pequenas tabelas de Bobby, definindo $studentName
paraRobert"); DROP TABLE Students;--
., A declaração SQL torna-se:
isto insere Robert na tabela de estudantes. Entretanto, a instrução INSERT é seguida agora por uma instrução da tabela DROP que remove a tabela inteira dos estudantes. Ai!
como evitar tabelas de Bobby
só há uma maneira de evitar ataques de tabelas de Bobby
- não criar declarações SQL que incluem dados externos.
- Use chamadas parametrizadas de SQL.é isso. Não tente escapar de personagens inválidos. Não tente fazê-lo você mesmo. Aprenda a usar declarações parametrizadas. Sempre, sempre.,
A tira tem uma coisa crucialmente errada. A resposta não é” desinfectar as entradas da sua base de dados”. É propenso a erro.