Ataques por injeção de comandos SQL

Maio 2017

Injeção de SQL

Os ataques por injeção de comandos SQL atacam 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 torne 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.

Quais são as contramedidas

Diversas regras podem te ajuda a se proteger contra os ataques por injeção SQL:


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 as contas de usuários não utilizadas, especialmente as contas padrão,
Não aceitar contas sem senha,
Restringir ao mínimo os privilégios das contas utilizadas,
Excluir os procedimentos armazenados.

Veja também


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: 25 de maio de 2017 às 07:58 por ninha25.
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.