MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Prevenção de injeção de JavaScript NoSQL no MongoDB


A resposta de Sushant não está correta. Você precisa estar ciente da injeção de NoSQL no MongoDB.

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

Se req.params.password é { $ne: 1 } , o usuário será recuperado sem saber a senha ($ne significa diferente de 1 ).

Driver MongoDB

Você pode usar o mongo-sanitize:

Ele removerá todas as chaves que começam com '$' na entrada, para que você possa passá-las para o MongoDB sem se preocupar com a substituição de usuários mal-intencionados.
var sanitize = require('mongo-sanitize');

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

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

Motorista mangusto

Como segue um esquema, se a senha é um campo de string, ele converterá o objeto { $ne: 1 } para amarrar e nenhum dano será feito. Neste caso, você não precisa desinfetar, apenas lembre-se de definir um esquema adequado.