Ataques por injeção de comandos SQL

Novembro 2017

Injeção de SQL

Os ataques por injeção de comandos SQL (SQL injection) afetam os websites que dependem de bancos de dados relacionados. Neste tipo de site, os parâmetros são passados para o banco de dados como uma consulta SQL. Assim, se um designer não verificar os parâmetros passados para a consulta SQL, um hacker pode modificar a consulta para acessar todo o banco de dados e até mesmo modificar o seu conteúdo.

Na verdade, alguns caracteres permitem coordenar várias consultas SQL ou ignorar o resto do pedido. Ao inserir este tipo de caractere na consulta, um hacker pode potencialmente executar a consulta que você escolher.

Vejamos o seguinte pedido, esperando um nome de usuário como parâmetro:


SELECT * FROM usuários WHERE nome="$nome";

Basta que um hacker introduza um nome como “toto” OR 1=1 OR nome = " titi” para que o pedido se transforme no seguinte:

SELECT * FROM usuários WHERE nome="toto" OR 1=1 OR nome ="titi";

Assim, com o pedido acima, a cláusula WHERE sempre é realizada, o que significa que devolverá os registros que correspondem a todos os usuários.

Procedimentos armazenados

Além disso, certos sistemas de gestão de bancos de dados, como o Microsoft SQL Server, possuem procedimentos armazenados que possibilitam executar comandos de administração. Estes procedimentos armazenados são potencialmente perigosos, já que permitir que um usuário mal-intencionado execute comandos do sistema, podendo conduzir a uma eventual intrusão.

Como evitar SQL injection

Diversas ações ajudam a se proteger de ataques por injeção de SQL. Entre eles estão verificar o formato dos dados introduzidos, principalmente a presença de caracteres especiais, não exibir mensagens de erro explícitas que mostram o pedido ou parte da consulta SQL, excluir contas de usuários não utilizadas, não aceitar contas sem senha, restringir os privilégios das contas utilizadas e excluir os procedimentos armazenados.

SQL injection attacks
SQL injection attacks
Ataques de inyección SQL
Ataques de inyección SQL
Attaques par injection de commandes SQL
Attaques par injection de commandes SQL
Attacchi SQL injection
Attacchi SQL injection
Última modificação: 3 de outubro de 2017 às 12:39 por Pedro.CCM.
Este documento, intitulado 'Ataques por injeção de comandos SQL', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.