NoSQL injection: o risco que pega quem usa MongoDB
Quem usa MongoDB costuma achar que está livre de injeção. Não está. Veja como um objeto mal validado pode burlar o login e como se proteger.
Por Equipe We Codex3 min de leitura
"Não usamos SQL, então não temos SQL injection." É verdade — mas bancos de documentos como o MongoDB têm sua própria versão do problema, e ela é igualmente perigosa.
Como acontece
Imagine um login assim:
const user = await db.users.findOne({ email: req.body.email, senha: req.body.senha })Se o atacante enviar {"email": "admin@empresa.com", "senha": {"$ne": null}}, a consulta passa a significar "senha diferente de nulo" — e o login é aceito sem senha.
Por que funciona
APIs em JSON aceitam objetos onde o código esperava texto. Operadores como $ne, $gt e $where viajam junto e mudam o sentido da consulta.
Como se proteger
- 1.Valide o tipo de cada campo: se é texto, tem que ser texto. Com Zod, um
z.string()barra o objeto na entrada (Validação rigorosa de dados: prevenindo falhas de segurança e dados inconsistentes com Zod e TypeScript). - 2.Remova operadores de entradas que nunca deveriam contê-los.
- 3.Nunca compare senha no banco: busque pelo e-mail e verifique o hash na aplicação (Senhas: hash com bcrypt ou Argon2, nunca "criptografia").
- 4.Evite `$where` e qualquer recurso que execute código no banco.
O padrão por trás
Toda injeção nasce do mesmo erro: tratar dado do usuário como instrução. Vale para SQL (SQL injection em 2026: ainda acontece, e é assim que se previne), para NoSQL e, mais recentemente, para prompts de IA (Prompt injection: o novo SQL injection).
Proteção contra injeção faz parte de Segurança Anti-Hacker na We Codex. Fale com a gente.
- NoSQL
- MongoDB
- Segurança
- Node.js
Resolver de vez, com quem faz isso todo dia
Quer saber quão exposto está o seu sistema hoje?
Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.
Continue lendo
Tudo sobre Segurança- Ler artigo
Segurança3 min
SQL injection em 2026: ainda acontece, e é assim que se previne
SQL injection é uma falha antiga, mas continua aparecendo em sistemas novos — principalmente em filtros e buscas montados à mão. Veja como ela acontece e como fechar a porta.
- Ler artigo
Segurança3 min
Senhas: hash com bcrypt ou Argon2, nunca "criptografia"
"As senhas estão criptografadas" pode significar que alguém consegue revertê-las. Veja a diferença entre criptografia e hash e como guardar senhas do jeito certo.
- Ler artigo
Backend & APIs3 min
Validação rigorosa de dados: prevenindo falhas de segurança e dados inconsistentes com Zod e TypeScript
TypeScript não valida o que chega da internet. Veja como usar Zod para barrar dados inválidos na entrada da API e do formulário — com um único esquema.