Injeção SQL
Injeção SQL é uma falha de segurança onde o hacker é capaz de acessar seu banco de dados através da manipulação de variáveis do script. Este tipo de acesso pode ser usado para adicionar novo conteúdo ao seu banco de dados, modificar o conteúdo existente, apagar seu banco de dados ou permitir o acesso ao painel de controle do seu sistema.
Para compreender como isso é possível, vamos descrever os fundamentos de como o script pega dados das variáveis presentes na URL e como os valores dessas variáveis podem ser usados para acessar o banco de dados.
Supondo que você tenha uma URL como http://www.seusite.com.br/artigo.php?id=12345, isto significa que ela passará para o script “artigo.php” a variável “id” com o valor “12345”.
Agora, dentro do script, essa variável será usada para acessar o banco de dados, através de uma query como:
SELECT titulo,conteudo FROM artigos WHERE id=$id;
Essa query instrui o banco de dados a puxar o conteúdo das colunas “titulo” e “conteudo” da tabela “artigos”, onde a coluna “id” equivale ao valor passado através da variável “$id”. Usando a URL dada como exemplo, essa query puxará o título e o conteúdo do artigo número 12345.
Mas e se o hacker manipular o valor da variável “$id”? Caso o hacker modifique a URL para algo como:
http://www.seusite.com.br/artigo.php?id=12345;DELETE%20FROM%20artigos
A query enviada ao banco de dados será:
SELECT titulo,conteudo FROM artigos WHERE id=12345;DELETE FROM artigos;
E adivinhe o que acontecerá? A tabela “artigos” será apagada.
No entanto, a forma mais comum de injeção SQL é para conseguir acesso ao painel de controle do site.
Vamos supor que o hacker encontrou a tela de login, pedindo o nome do usuário e uma senha, e que o login e a senha sejam inseridos em uma query como:
SELECT * FROM usuarios WHERE login= '$login ' AND senha= '$senha ';
Agora, vamos assumir que o hacker simplesmente digitou 1' OR '1' = '1 como login e 1' OR '1' = '1 como senha. Estes valores geram a seguinte query:
SELECT * FROM usuarios WHERE login='1' OR '1' = '1' AND senha= '1' OR '1' = '1';
Devido à lógica adicionada (OR '1'='1'), a query sempre será executada independentemente do login ou da senha imputados, permitindo que o hacker tenha acesso ao banco de dados ou ao painel de controle que supostamente estariam protegidos com uma senha.
Felizmente, existem alguns procedimentos básicos que protegem os scripts contra injeções SQL. Vamos falar sobre eles.
Respostas recomendadas
Não há comentários para mostrar.
Crie uma conta ou entre para comentar
Você precisa ser um usuário para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar agora