MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Предотвратяване на инжектиране на JavaScript NoSQL в MongoDB

Отговорът на Сушант не е правилен. Виенеобходими за да сте наясно с инжектирането на NoSQL в MongoDB.

Пример (взето от тук)

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

Ако req.params.password е { $ne: 1 } , потребителят ще бъде извлечен без да знае паролата ($ne означава не е равно на 1 ).

Драйвер MongoDB

Можете да използвате mongo-sanitize:

Той ще премахне всички ключове, които започват с „$“ във входа, така че можете да го предадете на MongoDB, без да се притеснявате, че злонамерени потребители ще презапишат.

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

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

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

Шофьор на мангуста

Както следва схема, ако паролата е низово поле, то ще преобразува обекта { $ne: 1 } на низ и няма да бъдат нанесени щети. В този случай не е необходимо да дезинфекцирате, просто не забравяйте да зададете правилна схема.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $arrayElemAt

  2. Mongodb concat int и низ

  3. Фатална грешка - класът 'Mongo' не е намерен

  4. Разлика между Find и FindAsync

  5. MongoDB GUI клиент (кросплатформен или Linux)