Command Palette

Search for a command to run...

Glossário SQL Injection (SQLi)

O Que É Injeção de SQL (SQLi)?

Injeção de SQL (SQLi) é um tipo de ataque onde atacantes inserem comandos SQL maliciosos em campos de entrada para manipular o banco de dados.

Este ataque tem como alvo aplicações que falham em lidar corretamente com a validação, entrada de usuário, permitindo acesso não autorizado a dados sensíveis como senhas ou detalhes de cartão de crédito, etc.

Como Funciona a Injeção de SQL

Quando uma aplicação inclui diretamente a entrada do usuário em uma consulta de banco de dados sem a devida validação, os atacantes podem modificar o comportamento da consulta para inserir um comando SQL malicioso.

Por exemplo:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

Um atacante poderia inserir:

' OR '1'='1

Resultando em:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

Isso sempre retorna verdadeiro, concedendo acesso não autorizado.

Por Que a Injeção de SQL É Importante na Cibersegurança

A Injeção de SQL é a técnica mais perigosa e antiga na cibersegurança. Este tipo de ataque é consistentemente listado no OWASP Top 10.

Mesmo pequenas vulnerabilidades permitem que um atacante:

  • Acessar, modificar ou excluir dados
  • Contornar autenticação
  • Executar operações administrativas no banco de dados.
  • Comprometer todo o sistema.

Tipos Comuns de Injeção SQL

  • SQLi Clássico: Injeção direta via formulários web ou parâmetros de URL.
  • SQLi Cego: Os atacantes inferem informações do banco de dados indiretamente (por exemplo, através de mensagens de erro ou tempo de resposta).
  • SQLi baseado em União: Usa o operador UNION para combinar resultados de múltiplas consultas.
  • SQLi baseado em Erro: Baseia-se em mensagens de erro do banco de dados para extrair informações.
  • SQLi Cego baseado em Tempo: Explora atrasos na resposta do servidor para adivinhar resultados de consultas.

Como Prevenir Injeção SQL

1. Use Consultas Parametrizadas (Declarações Preparadas)

Garanta que comandos SQL tratem a entrada do usuário como dados, não como código executável.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Validação e Saneamento de Entrada

Valide todas as entradas dos usuários, permitindo apenas caracteres esperados.

3. Use frameworks ORM

Frameworks como Prisma, Hibernate, etc., reduzem o manuseio direto de SQL.

4. Princípio do Menor Privilégio

Limite a permissão do usuário, concedendo apenas a permissão necessária.

5. Testes de Segurança Regulares

Use ferramentas de teste de segurança de aplicativos como SAST, DAST ou IAST para detectar falhas de injeção precocemente.

Exemplo no Mundo Real

Um site de loja online sofreu uma violação onde atacantes usaram uma injeção SQL em um formulário de login para extrair detalhes de cartões de crédito de seu banco de dados.

Termos Relacionados

Next Steps

Pronto para proteger suas aplicações? Escolha seu caminho a seguir.

Junte-se a mais de 500 empresas que já estão protegendo suas aplicações com o Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready