DEV Community

Cover image for Como evitar SQL Injection no MongoDB
Will Koller
Will Koller

Posted on

Como evitar SQL Injection no MongoDB

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:

Image description

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:

Image description

Depois de rodar o Github Actions, notamos que não tem mais alerta na aba de security no github:

Image description

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.

Discussion (1)

Collapse
renatoleal_dev profile image
Renato Marcondes Leal

Muito bom Will. Parabéns e obrigado por compartilhar!