O que é SQL injection
SQL injection acontece quando a entrada do usuário altera a consulta enviada ao banco. O ataque explora a concatenação de texto: o valor recebido entra no comando como se fosse estrutura.
O efeito depende do privilégio da conexão. Uma consulta de leitura pode expor registros, e uma conexão com permissão de escrita pode alterar ou apagar tabelas.
Como o ataque funciona
Uma tela de login monta a consulta com o nome digitado. Ao inserir uma sequência que fecha a condição e acrescenta outra, o atacante muda o que o banco executa.
O mesmo padrão aparece em filtros, buscas e parâmetros de URL. Qualquer lugar que junte texto com valor sem parametrização repete a condição.
A correção é parametrizar
A consulta parametrizada separa o comando do valor. O banco recebe a estrutura pronta e trata a entrada como informação, não como parte da instrução.
A validação de entrada complementa a parametrização. Também vale limitar o privilégio da conexão da aplicação, para que uma falha não alcance o restante do banco.
Exemplo
Como conferir
Procure concatenação de texto nas consultas e confira se o valor entra como parâmetro. Revise o privilégio do usuário do banco e teste a entrada em ambiente controlado.
O WAF registra tentativas conhecidas e permite identificar varredura. A correção continua no código, e o banco de dados precisa de uma conexão com o menor privilégio possível.
Dúvidas frequentes
Perguntas frequentes sobre SQL injection
- Escapar aspas resolve a injeção de SQL?
- Contribui, mas não substitui a consulta parametrizada. A concatenação de texto continua criando caminhos para a entrada alterar o comando.
- O WAF impede a injeção?
- O WAF cobre padrões conhecidos e serve como camada extra. A correção precisa estar na consulta, porque uma variação do ataque pode passar pela assinatura.
- ORMs eliminam o problema?
- Não. O ORM oferece parametrização, mas a consulta montada com texto e a ordem de execução ainda podem abrir a falha.
- Como provar que a falha existe?
- Use um ambiente de teste e uma entrada controlada que altere a consulta sem destruir informação. Registre a consulta executada e a resposta obtida.
Para continuar
Recursos relacionados
Documentação
OWASP: SQL injection
Descreve o ataque, as variações e os efeitos no banco.
Abrir recursoDocumentação
OWASP: prevenção de injeção de SQL
Reúne a parametrização, a validação e as práticas de consulta.
Abrir recursoAplicação na formação
Formação DevOps
Na Formação DevOps, a injeção de SQL aparece na revisão da aplicação e na camada de validação antes do banco.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.