Sushant ‚s Antwort ist nicht korrekt. Sie müssen NoSQL-Injektion in MongoDB beachten.
Beispiel (aus here)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Wenn req.params.password
ist { $ne: 1 }
, wird der Benutzer ohne zu wissen, das Passwort abgerufen werden ($ne
bedeutet nicht gleich 1).
MongoDB-Treiber
können Sie verwenden mongo-sanitize:
Es werden alle Tasten Streifen aus, die mit '$' in den Eingang zu starten, so dass Sie es MongoDB über passieren können, ohne sich Gedanken böswillige Benutzer überschreiben.
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 Treiber
Da es ein Schema folgt, wenn das Passwort ein String-Feld ist, wird es das Objekt { $ne: 1 }
in String konvertiert und wird kein Schaden angerichtet werden. In diesem Fall müssen Sie nicht bereinigen, denken Sie daran, ein geeignetes Schema zu erstellen.
Solange Sie den JSON mit 'JSON.parse' analysieren (im Gegensatz zu' eval'), und Sie die Daten validieren, sollten Sie in Ordnung sein. JSON ist nicht von Natur aus gefährlich :) – Ryan
Verhindern Sie nicht, dass Dinge in Ihre Datenbank gelangen, und verhindern Sie, dass Dinge in Ihrer Datenbank als Code ausgeführt werden. – Incognito
Wie parse ich mein Postobjekt? – daniel