MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Prevenzione dell'iniezione di JavaScript NoSQL in MongoDB

La risposta di Sushant non è corretta. Hai bisogno essere a conoscenza dell'iniezione di NoSQL in MongoDB.

Esempio (tratto da qui)

User.findOne({
    "name" : req.params.name, 
    "password" : req.params.password
}, callback); 

Se req.params.password è { $ne: 1 } , l'utente verrà recuperato senza conoscere la password ($ne significa non è uguale a 1 ).

Driver MongoDB

Puoi usare mongo-sanitize:

Eliminerà tutte le chiavi che iniziano con "$" nell'input, quindi puoi passarlo a MongoDB senza preoccuparti della sovrascrittura di utenti dannosi.

var sanitize = require('mongo-sanitize');

var name = sanitize(req.params.name);
var password = sanitize(req.params.password);

User.findOne({
    "name" : name, 
    "password" : password
}, callback); 

Driver della mangusta

Come segue uno schema, se la password è un campo stringa, convertirà l'oggetto { $ne: 1 } alla corda e nessun danno sarà fatto. In questo caso non è necessario sanificare, ricordati solo di impostare uno schema adeguato.