O que é SQL Injection?
SQL Injection é um ataque no qual código malicioso é passado para um servidor SQL, que o executa. O ataque pode resultar em acesso não autorizado a dados confidenciais, ou destruição de dados críticos.
Como saber se uma query não previne SQL Injection?!
Neste exemplo estou usando CodeQL, o que é CodeQL?!
- É um mecanismo de análise de código que descobre vulnerabilidades.
Nesse exemplo na aba de security do github:
O code sacanner nos avisa, que se uma consulta de banco de dados (como uma consulta SQL ou NoSQL) for criada a partir de dados fornecidos pelo usuário sem higienização suficiente, um usuário mal-intencionado poderá executar consultas de banco de dados mal-intencionadas.
Como recomendação para queries NoSQL, podemos usar um operador como $eq
do MongoDB
Iremos fazer um refactor no UsersRepository para evitar SQL Injection:
Depois de rodar o Github Actions, notamos que não tem mais alerta na aba de security no github:
E assim não temos mais alerta de SQL Injection;
Repo de exemplo:
https://github.com/williamkoller/my-readings
Espero ter te ajudado de alguma maneira, pode comentar e compartilhar.
Top comments (1)
Muito bom Will. Parabéns e obrigado por compartilhar!