Sushant's antwoord is niet correct. Je nodig om op de hoogte te zijn van NoSQL-injectie in MongoDB.
Voorbeeld (van hier genomen)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Als req.params.password
is { $ne: 1 }
, wordt de gebruiker opgehaald zonder het wachtwoord te kennen ($ne
betekent niet gelijk aan 1 ).
MongoDB-stuurprogramma
U kunt mongo-sanitize gebruiken:
Het verwijdert alle sleutels die beginnen met '$' in de invoer, zodat u deze kunt doorgeven aan MongoDB zonder dat u zich zorgen hoeft te maken over het overschrijven van kwaadwillende gebruikers.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Mangoestrijder
Omdat het een schema volgt, als het wachtwoord is een stringveld, het zal het object { $ne: 1 }
. converteren te rijgen en er wordt geen schade aangericht. In dit geval hoeft u niet te ontsmetten, maar vergeet niet om een goed schema in te stellen.