sql >> Base de Datos >  >> NoSQL >> MongoDB

Prevención de inyección JavaScript NoSQL en MongoDB

La respuesta de Sushant no es correcta. Usted necesita estar al tanto de la inyección de NoSQL en MongoDB.

Ejemplo (tomado de aquí)

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

Si req.params.password es { $ne: 1 } , el usuario será recuperado sin conocer la contraseña ($ne significa distinto de 1 ).

Controlador MongoDB

Puedes usar mongo-desinfectar:

Eliminará cualquier clave que comience con '$' en la entrada, para que pueda pasarla a MongoDB sin preocuparse de que los usuarios malintencionados la sobrescriban.

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

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

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

Conductor de mangosta

Como sigue un esquema, si la contraseña es un campo de cadena, convertirá el objeto { $ne: 1 } a la cuerda y no se hará ningún daño. En este caso, no necesita desinfectar, solo recuerde establecer un esquema adecuado.