A resposta de Sushant não está correta. Você precisa estar ciente da injeção de NoSQL no MongoDB.
Exemplo (retirado daqui)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Se
req.params.password
é { $ne: 1 }
, o usuário será recuperado sem saber a senha ($ne
significa diferente de 1 ). Driver MongoDB
Você pode usar o mongo-sanitize:
Ele removerá todas as chaves que começam com '$' na entrada, para que você possa passá-las para o MongoDB sem se preocupar com a substituição de usuários mal-intencionados.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Motorista mangusto
Como segue um esquema, se a senha é um campo de string, ele converterá o objeto
{ $ne: 1 }
para amarrar e nenhum dano será feito. Neste caso, você não precisa desinfetar, apenas lembre-se de definir um esquema adequado.