A injeção de SQL é uma vulnerabilidade crítica e comum na segurança web, na qual atacantes inserem código SQL malicioso em campos de entrada, fazendo com que aplicativos executem comandos de banco de dados não autorizados.Isso permite que invasores extraiam, modifiquem ou excluam dados do banco de dados. O problema surge de entradas de usuário mal higienizadas e é evitado com o uso de consultas parametrizadas, instruções preparadas e validação rigorosa de entrada.
-
- Mecanismo: Os atacantes manipulam os dados de entrada do aplicativo (formulários, URLs) para alterar as consultas SQL do servidor, burlando as verificações de segurança.
- Impacto: Os atacantes podem roubar dados confidenciais, modificar o conteúdo do banco de dados, obter controle administrativo e, em alguns casos, executar comandos do sistema operacional.
.
- Técnicas de prevenção:
- Consultas parametrizadas (instruções preparadas): A defesa mais eficaz, garantindo que o banco de dados trate a entrada do usuário como dados, e não como código executável.
- Sanitização/Validação de Entrada: Limpeza ou filtragem de entradas para permitir apenas caracteres esperados e seguros.
- Princípio do Menor Privilégio: Limitar as permissões da conta do banco de dados ao mínimo estritamente necessário para a operação.
- Tipos: SQLi em banda (clássico) (baseado em erros, baseado em união), SQLi inferencial (cego) (baseado em booleanos, baseado em tempo) e SQLi fora de banda
Exemplo:
Em vez de um nome de usuário, um atacante pode inserir ' OR '1'='1, o que pode burlar a autenticação alterando a consulta SQL para que ela sempre seja avaliada como verdadeira