MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Disinfetta l'input dell'utente in Mongoose

Sembra il mongo-sanitize Il modulo npm è il punto di partenza per la funzionalità di escape raw. Onestamente questo suona più appropriato al livello del middleware connect/express perché al livello mongoose, in base alla progettazione, il codice non esercita alcuna aspettativa sui parametri di query/aggiornamento in termini di scrittura dello sviluppatore dell'applicazione (nel qual caso non devono essere sanificati o non funzioneranno correttamente) o comportano l'input dell'utente (che deve essere sanificato). Quindi consiglierei le funzioni del middleware per disinfettare i luoghi più comuni in cui inserire l'input dell'utente:req.body , req.query e req.params . Quindi, ad esempio, potresti fare qualcosa come (schizzo):

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);