JSON-модуль Python должен быть безопасным для использования с ненадежным вводом, по крайней мере в его конфигурации по умолчанию (т. Е. Вы не предоставили ни одного из пользовательских декодеров, которые могли бы потенциально содержать эксплойты).
ОднакоМы не можем с уверенностью сказать, что результаты json.loads()
можно безопасно передавать в метод find()
Пимонго.Хотя метод find()
не будет изменять (обновлять или удалять) данные в mongodb, можно намеренно создавать очень плохо выполняемые запросы, например, следующий, который использует специально созданное предложение $where
для создания очень плохих характеристик производительности:
{"$where": "function() { for (var i=0; i<1000000; i++) {}; return true; }"}
Обратите внимание, что это и допустимый JSON, и допустимый запрос к mongodb.
По этой причине я бы не позволил использовать созданный пользователем JSON непосредственно как запрос кmongodb, если только ваши пользователи не являются доверенными (т.е. клиенты, которыми вы управляете напрямую, например, другие серверы / компоненты в приложении).