Отговорът на Сушант не е правилен. Виенеобходими за да сте наясно с инжектирането на 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 }
на низ и няма да бъдат нанесени щети. В този случай не е необходимо да дезинфекцирате, просто не забравяйте да зададете правилна схема.