gpt4 book ai didi

python - 清理 MongoDB 的输入

转载 作者:可可西里 更新时间:2023-11-01 09:11:51 26 4
gpt4 key购买 nike

我正在为 MongoDB 数据库程序编写一个 REST 接口(interface),并且我正在尝试实现搜索功能。我想公开整个 MongoDB 接口(interface)。我有两个问题,真的,但它们是相关的,所以我将它们放在一个帖子中:

  1. 使用 Python json 模块解码不受信任的 JSON 是否安全,或者它是否像 pickle 模块一样允许任意代码执行?
  2. 将解码后的 JSON 传递给 PyMongo find() 函数是否安全?

最佳答案

Python 的 JSON 模块应该可以安全地与不受信任的输入一起使用,至少在其默认配置中是这样(即您没有提供任何自定义解码器,这些解码器中可能存在漏洞)。

但是,我们不能肯定地说 json.loads() 的结果可以安全地传递给 pymongo 的 find() 方法。虽然 find() 方法不会修改(更新或删除)mongodb 中的数据,但可以故意制作性能非常差的查询,如下面使用特制的 $where 子句创建非常差的性能特征:

{"$where": "function() { for (var i=0; i<1000000; i++) {}; return true; }"}

请注意,这既是有效的 JSON,也是有效的 mongodb 查询。

出于这个原因,我不允许将用户制作的 JSON 直接用作对 mongodb 的查询,除非您的用户都是可信的(即您直接控制的客户端,例如应用程序中的其他服务器/组件) .

关于python - 清理 MongoDB 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com