Cheguei a conclusão que o maior problema das pessoas que se metem a aprender SQL Injection é não saber o que é SQL e muito menos o que é o SQL Injection. Nesse post eu não vou e nem quero me aprofundar em nada, irei apenar passar uma visão geral sobre o assunto.
De acordo com a
Wikipedia o SQL significa:
"Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características originais do SQL foram inspiradas na álgebra relacional."
Se você não entendeu ou ficou com preguiça de pesquisar, posso resumir que o SQL é um sistema de banco de dados utilizado em larga escala.
Quando você entrou nesse blog, para esse post ser exibido o seguinte processo teve que ocorrer:
Você requeriu esta pagina ao servidor web que consultou o servidor SQL os dados desse post.
SQL Injection, como o nome já diz, constitui você injetar comandos de SQL na consulta. Considere o seguinte script PHP vulneravel a SQL Injection:
Em lugar nenhum nesse script de autenticação vemos o input do usuario ser tratado, sendo assim se o usuario entrar com o input no campo login "admin'/*" e senha vazia a consulta passa a ser:
SELECT * FROM users WHERE username='admin'/*' and password=''
Como você já deve saber /* é um comentario, tudo que vier depois dele é ignorado pelo servidor, sendo assim o servidor só verificou se o nome de usuario existe e autenticou o usuario.
Parece simples mas não é, nenhum programador é bobo de deixar um login sem verificação (ok.. alguns são.... continuando), obviamente SQL Injection pode ser feito não apenas em scripts de logins mas em qualquer coisa aonde entra o input do usuario na consulta.
Para proteger um script contra esse tipo de ataque basta verificar o input do usuario contra caracteres especiais que o seu SQL server possa interpretar. No PHP a maneira mais facil de fazer isso é passando o input pela função
mysql_real_escape_string.
No meu próximo livro "SQL Injection for Lamers" irei passar algumas receitas de bolo, pode não parecer mas para escrever este artigo levei um tempo consideravel. Se você se interessou por este livro ele esta disponivel nas melhores livrarias e no site da editora
O'Really.