Désinfecter les entrées utilisateur dans Mongoose

À l’exception de cette réponse plutôt peu informative et d’une autre réponse impopulaire , il semble que je n’arrive pas à trouver de ressources sur la désinfection de l’entrée utilisateur à l’aide de Mongoose.

Il y a un article de blog ici sur l’injection Node / MongoDB qui semble bon au niveau du serveur, mais il doit y avoir quelque chose au niveau du middleware (par exemple, Mongoose) qui puisse nettoyer les entrées et assurer une sécurité raisonnable dans la firebase database.

Y a-t-il une telle bête, ou est-ce même nécessaire?

Il semble que le module mongo-sanitize npm soit le sharepoint départ pour la fonctionnalité d’échappement brut. Honnêtement, cela semble plus approprié au niveau de la couche middleware express / connect car, à la conception, le code n’exige aucune attente sur les parameters de requête / mise à jour, qu’ils soient écrits par le développeur de l’application (dans ce cas ne doivent pas être désinfectés ou ils ne fonctionneront pas correctement) ou impliquer une entrée utilisateur (qui doit être désinfectée). Par conséquent, je recommanderais aux fonctions middleware de nettoyer les emplacements les plus courants pour l’entrée d’utilisateur: req.body , req.query et req.params . Ainsi, par exemple, vous pourriez faire quelque chose comme (sketch):

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

Il existe un nouvel outil permettant le contrôle automatique des données d’URL et de corps HTML à venir. https://www.npmjs.com/package/content-filter

Une méthode native escape() peut également être utilisée pour protéger la firebase database.

Exécutez l’extrait de code ci-dessous pour voir les résultats.

 let a = "{$gt:25}" console.log(a) console.log(escape(a))