sql >> Base de Datos >  >> NoSQL >> MongoDB

Desinfecte la entrada del usuario en Mongoose

Parece que mongo-sanitize El módulo npm es el punto de partida para la funcionalidad de escape sin formato. Honestamente, esto suena más apropiado en la capa de middleware connect/express porque en la capa mangosta, por diseño, el código no ejerce ninguna expectativa sobre los parámetros de consulta/actualización en términos de si están escritos por el desarrollador de la aplicación (en cuyo caso no deben desinfectarse o no funcionarán correctamente) o involucrar la entrada del usuario (que debe desinfectarse). Por lo tanto, recomendaría funciones de middleware para desinfectar los lugares más comunes para que ingrese la entrada del usuario:req.body , req.query y req.params . Entonces, por ejemplo, podría hacer algo como (boceto):

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