Sushants Antwort ist nicht korrekt. Sie brauchen um sich der NoSQL-Einschleusung in MongoDB bewusst zu sein.
Beispiel (entnommen von hier)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Wenn req.params.password
ist { $ne: 1 }
, wird der Benutzer abgerufen, ohne das Passwort zu kennen ($ne
bedeutet nicht gleich 1 ).
MongoDB-Treiber
Sie können mongo-sanitize verwenden:
Es entfernt alle Schlüssel, die mit „$“ in der Eingabe beginnen, sodass Sie sie an MongoDB übergeben können, ohne sich Gedanken über das Überschreiben durch böswillige Benutzer machen zu müssen.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Mungofahrer
Da folgt ein Schema, wenn das Passwort ein Zeichenfolgenfeld ist, wird es das Objekt { $ne: 1 }
konvertieren zu besaiten und es wird kein Schaden angerichtet. In diesem Fall müssen Sie nicht bereinigen, denken Sie nur daran, ein geeignetes Schema festzulegen.