La réponse de Sushant n'est pas correcte. Vous avez besoin être au courant de l'injection NoSQL dans MongoDB.
Exemple (extrait d'ici)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Si req.params.password
est { $ne: 1 }
, l'utilisateur sera récupéré sans connaître le mot de passe ($ne
signifie pas égal à 1 ).
Pilote MongoDB
Vous pouvez utiliser mongo-sanitize :
Il supprimera toutes les clés commençant par '$' dans l'entrée, afin que vous puissiez la transmettre à MongoDB sans vous soucier de l'écrasement par des utilisateurs malveillants.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Conducteur Mangouste
Comme il suit un schéma, si le mot de passe est un champ de chaîne, il convertira l'objet { $ne: 1 }
à la ficelle et aucun dommage ne sera fait. Dans ce cas, vous n'avez pas besoin de nettoyer, n'oubliez pas de définir un schéma approprié.