NoSQL-инъекция
Внедрение операторов запроса в NoSQL-базы (например MongoDB) через непроверенный ввод.
Сигнатура
NoSQL InjectionNoSQL-инъекция похожа на SQLi, но нацелена на нереляционные базы вроде MongoDB. Если ввод напрямую попадает в объект запроса, злоумышленник может подставить операторы вроде $ne или $gt и обойти проверки.
Как защититься: приводите входные данные к ожидаемому типу (строка, число), не передавайте сырые объекты из запроса в фильтр, используйте схемы валидации.
// Опасно: тело запроса попадает прямо в фильтр
// злоумышленник шлёт { "password": { "$ne": null } }
db.users.findOne({ login: req.body.login, password: req.body.password });
// Безопасно: приводим к строке и валидируем тип
const login = String(req.body.login);
const password = String(req.body.password);
db.users.findOne({ login, password });