#javascript #node.js #mongodb #security #mongoose
#javascript #node.js #mongodb #Безопасность #mongoose
Вопрос:
Изучая основы MongoDB, я прочитал, что MongoDB уязвим для инъекционных атак «из коробки». В node это можно предотвратить с помощью модуля mongo-sanitize. Пока все хорошо. Теперь давайте добавим Mongoose к уравнению.
Если мы используем Mongoose
- Нам все еще нужно очищать входные данные MongoDB? Должны ли мы по-прежнему использовать mongo-sanitize вместе с Mongoose?
- Предлагает ли Mongoose какую-либо явную защиту от внедрения вообще, или защита исходит от применения типов в схемах и моделях?
Я помню, что читал, что Mongoose может в некоторой степени предотвращать инъекции, но я не знаю специфики, или если это излишне для очистки от Mongoose.
Ответ №1:
Как упоминалось в статье, проблема возникает, когда пользователи не отправляют строку типа ‘bergur’ и ‘myawesomepassword’, а вместо этого отправляют {"$ne": null}
имена пользователей и пароли.
Если вы создаете схему и определяете имя пользователя и пароль в виде строк, то Mongoose преобразует ее в строку, и вы избегаете проблемы.
Что касается внедрения where, mongo-sanitize вам здесь не поможет. Решение состоит в том, чтобы просто никогда не использовать оператор $where
Итак, чтобы просто ответить на ваш вопрос:
- Нет, вам не нужно использовать mongo-sanitize
- Нет явной защиты от внедрения, защита исходит от схем и моделей.