sql >> Databasteknik >  >> NoSQL >> MongoDB

JavaScript NoSQL-injektionsförebyggande i MongoDB

Sushants svar är inte korrekt. Du behöver för att vara medveten om NoSQL-injektion i MongoDB.

Exempel (tagen härifrån)

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

Om req.params.password är { $ne: 1 } , kommer användaren att hämtas utan att känna till lösenordet ($ne betyder inte lika med 1 ).

MongoDB-drivrutin

Du kan använda mongo-sanitize:

Den tar bort alla nycklar som börjar med '$' i inmatningen, så att du kan skicka den till MongoDB utan att oroa dig för att skadliga användare skriver över.

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

Eftersom det följer ett schema, om lösenordet är ett strängfält kommer det att konvertera objektet { $ne: 1 } till sträng och ingen skada kommer att ske. I det här fallet behöver du inte rensa, kom bara ihåg att ställa in ett korrekt schema.



  1. Frågar efter befolkning i Mongoose

  2. Redis som en databas

  3. Fjäderkänga + redis

  4. Kör MongoDB på DigitalOcean