A Injeção de SQL, ou SQL Injection, está entre as vulnerabilidades mais críticas em aplicações Web. De acordo com a OWASP, a melhor maneira de prevenir essa vulnerabilidade é
- A)utilizar uma política de senha forte.
Errada, porque política de senha forte melhora autenticação, mas não impede que uma consulta SQL seja manipulada por entrada maliciosa.
- B)desativar mensagens de erro detalhadas.
Errada, porque ocultar erros detalhados evita vazamento de informação, mas não corrige a construção insegura das consultas.
- C)usar um firewall de aplicativo web (WAF).
Errada, porque o WAF pode atenuar ataques, mas é apenas uma barreira complementar e não a melhor forma de prevenir a falha segundo a OWASP.
- D)usar consultas parametrizadas ou Prepared Statements.
Certa, porque consultas parametrizadas ou Prepared Statements separam dados de comandos SQL e evitam a execução de código injetado.
- E)restringir o acesso à base de dados apenas ao IP do servidor.
Errada, porque restringir IP pode reduzir a exposição, mas não impede SQL Injection se a aplicação continuar montando consultas de forma insegura.
Gabarito: D
SQL Injection acontece quando o atacante consegue “enfiar” comandos SQL dentro da aplicação e fazer o banco executar algo que não era para executar. Na prática, isso costuma ocorrer quando a aplicação monta a consulta concatenando texto vindo do usuário, em vez de tratar esse dado como dado de verdade. A recomendação mais forte da OWASP para prevenir esse tipo de falha é usar consultas parametrizadas, também conhecidas como Prepared Statements. Com elas, os valores recebidos ficam separados da estrutura da consulta, então o banco não confunde entrada do usuário com instrução SQL. É como separar o ingrediente da receita: a aplicação recebe o valor, mas não deixa ele virar comando. Por isso o gabarito é a letra D. Essa é a medida de prevenção mais efetiva porque combate a causa raiz do problema, e não só os sintomas. A própria OWASP coloca o uso de parâmetros como a principal defesa contra SQL Injection, antes de medidas complementares como validação de entrada e controle de privilégios. As outras alternativas até podem ajudar em segurança geral, mas não resolvem o problema central. WAF, por exemplo, pode bloquear algumas tentativas, mas não substitui o tratamento correto das consultas. Segurança de banco e mensagens de erro também são importantes, só que ficam na camada de apoio, não na prevenção principal.