1
resposta

Injeção de dependências, Native Queries e SQL Injection, como resolvê-las?

Olá Kleber, Parabéns pelo curso, excelente didática.

Ao ver os exemplos de classes @Service e Specification para geração de queries dinâmicas, fiquei com quatro dúvidas, com indicado abaixo:

1) Os exemplos de injeção de dependências não poderiam ser feitas com a anotação @Autowired ? tanto na @Service quanto na Specification, algo como:

@Autowired private final FuncionarioRepository funcionarioRepository;

2) Nos Exemplos de @Native Query não podemos fazer algo semelhante a queries dinâmicas usando um Specification? sendo algo parecido com:

@Query(value="SELECT f Funcionarios WHERE f.nome LIKE '%:valorNomeDigitado%'", NativeQuery=true);

3) No caso da Native Query e Queries Dinâmicas (uso do Specification), para tomar uma atitude de se evitar o uso de SQLInjection por parte de um Frontend ou chamada à classe de consulta, considerando um valor da variável informada pelo usuário da aplicação como "DROP TABLE Funcionarios" ou outra pseudo-query que pudesse provocar dano ao banco e ao sistema. Como podemos impedir o SQL Injection? Seria criar um método para tratar a variável de entrada? ou o SpringBoot faria isso automaticamente?

4) Imagine que precisamos recuperar dados de tabelas com relacionamentos complexos do legado, onde essas tabelas e relacionamentos certamente não são nada triviais. Naturalmente a performance do Native Query é melhor que as demais? e quanto a interação com o legado complexo, o Native Query seria a melhor opção ou teríamos que pular diretamente para o JDBC?

Atenciosamente, Geovane Lemos

1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software