Wygląda na to, że mongo-sanitize
Moduł npm to miejsce, od którego należy zacząć surową funkcję ucieczki. Szczerze mówiąc, brzmi to bardziej odpowiednio w warstwie oprogramowania pośredniczącego connect/express, ponieważ w warstwie mangusty, z założenia, kod nie ma żadnych oczekiwań co do parametrów zapytania/aktualizacji, jeśli chodzi o to, czy są one napisane przez programistę aplikacji (w takim przypadku nie mogą być oczyszczone lub nie będą działać poprawnie) lub wymagają danych wejściowych użytkownika (które muszą zostać oczyszczone). Dlatego zalecam funkcje oprogramowania pośredniego, aby oczyścić najczęstsze miejsca, w których użytkownik wprowadza dane:req.body
, req.query
i req.params
. Na przykład możesz zrobić coś takiego (szkic):
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);