Sushants svar är inte korrekt. Du behöver för att vara medveten om NoSQL-injektion i MongoDB.
Exempel (tagen härifrån)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Om req.params.password
är { $ne: 1 }
, kommer användaren att hämtas utan att känna till lösenordet ($ne
betyder inte lika med 1 ).
MongoDB-drivrutin
Du kan använda mongo-sanitize:
Den tar bort alla nycklar som börjar med '$' i inmatningen, så att du kan skicka den till MongoDB utan att oroa dig för att skadliga användare skriver över.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Mongoose Driver
Eftersom det följer ett schema, om lösenordet är ett strängfält kommer det att konvertera objektet { $ne: 1 }
till sträng och ingen skada kommer att ske. I det här fallet behöver du inte rensa, kom bara ihåg att ställa in ett korrekt schema.