Banco de Dados: 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?
Alternativas98%
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).