MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Prévention de l'injection JavaScript NoSQL dans MongoDB

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é.