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

JavaScript NoSQL-injektionsforebyggelse i MongoDB

Sushants svar er ikke korrekt. Du har brug for at være opmærksom på NoSQL-injektion i MongoDB.

Eksempel (taget herfra)

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

Hvis req.params.password er { $ne: 1 } , vil brugeren blive hentet uden at kende adgangskoden ($ne betyder ikke lig med 1 ).

MongoDB-driver

Du kan bruge mongo-sanitize:

Det vil fjerne alle nøgler, der starter med '$' i inputtet, så du kan videregive det til MongoDB uden at bekymre dig om ondsindet brugeroverskrivning.

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

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

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

Mongoose Driver

Som det følger et skema, hvis adgangskoden er et strengfelt, vil det konvertere objektet { $ne: 1 } at snore, og ingen skade vil ske. I dette tilfælde behøver du ikke at rense, bare husk at indstille et ordentligt skema.



  1. Hvorfor returnerer Laravel Redis::scan('*') en forventet nøgle, men Redis::keys('*') gør det ikke?

  2. MongoDB $pop

  3. Laravel 5.1 Session og Socket.IO + Redis - Sender meddelelser til loggede (kendte) brugere og gruppe af brugere

  4. Fjern element fra indlejret array mongodb