NoSQL-инъекция

Внедрение операторов запроса в NoSQL-базы (например MongoDB) через непроверенный ввод.

СигнатураNoSQL Injection

NoSQL-инъекция похожа на 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 });
← Все записи: Веб-уязвимости и защита
Поддержать проект