MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Higienize a entrada do usuário no Mongoose


Parece que o mongo-sanitize O módulo npm é o ponto de partida para a funcionalidade de escape bruto. Honestamente, isso soa mais apropriado na camada de middleware de conexão/expressão porque na camada do mangusto, por design, o código não exerce nenhuma expectativa sobre os parâmetros de consulta/atualização em termos de serem escritos pelo desenvolvedor do aplicativo (nesse caso, eles não devem ser higienizados ou não funcionarão corretamente) ou envolver a entrada do usuário (que deve ser higienizada). Assim, eu recomendaria funções de middleware para limpar os locais mais comuns para entrada do usuário:req.body , req.query e req.params . Então, por exemplo, você pode fazer algo como (esboço):
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);