MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Benutzereingaben in Mongoose bereinigen

Es scheint der mongo-sanitize zu sein Das npm-Modul ist der Ausgangspunkt für die Raw-Escape-Funktionalität. Ehrlich gesagt klingt dies auf der Verbindungs-/Express-Middleware-Schicht angemessener, da der Code auf der Mongoose-Schicht konstruktionsbedingt keine Erwartungen an die Abfrage-/Aktualisierungsparameter in Bezug darauf stellt, ob sie vom Anwendungsentwickler geschrieben wurden (in diesem Fall sie dürfen nicht bereinigt werden, da sie sonst nicht richtig funktionieren) oder Benutzereingaben beinhalten (die bereinigt werden müssen). Daher würde ich Middleware-Funktionen empfehlen, um die häufigsten Stellen für Benutzereingaben zu bereinigen:req.body , req.query , und req.params . So könnten Sie zum Beispiel so etwas tun wie (Skizze):

var json = require("body-parser").json;
var sanitize = require("mongo-sanitize");

function cleanBody(req, res, next) {
  req.body = sanitize(req.body);
  next();
}

function updateUser(req, res) {
  //...
  // safe to build an update query involving req.body here
}
app.put("/api/users", json(), cleanBody, updateUser);