Como podemos proteger uma aplicação Java de ataques de SQL Injection?
Questão
Como podemos proteger uma aplicação Java de ataques de SQL Injection?
Alternativas
A) Executando todas as consultas como administrador do banco de dados.
B) Utilizando a classe ResultSet.
C) Concatenando strings para construir consultas SQL.
D) Utilizando a classe Statement.
E) Utilizando a classe PreparedStatement.
Explicação
Para proteger uma aplicação Java contra SQL Injection, a principal medida é evitar montar SQL por concatenação de strings com dados vindos do usuário. Em vez disso, deve-se usar consultas parametrizadas.
- A classe PreparedStatement permite escrever o SQL com placeholders (ex.:
WHERE usuario = ?) e depois preencher os valores com métodos comosetString,setInt, etc. - Assim, o driver do banco trata os valores como dados (e não como parte do comando SQL), reduzindo drasticamente a possibilidade de injeção.
Analisando as alternativas:
- A: executar como administrador piora a segurança (privilégios excessivos).
- B:
ResultSetapenas lê resultados, não previne injeção. - C: concatenar strings é justamente a prática vulnerável.
- D:
Statementcom concatenação é mais suscetível a SQL Injection. - E:
PreparedStatementé a forma correta (parametrização).
Alternativa correta: (E).