【问题标题】:Pymongo ORM injection? Sanitizing inputPymongo ORM 注入?消毒输入
【发布时间】:2013-02-03 11:37:47
【问题描述】:

我想你知道sql注入吗,nosql也一样,叫做orm注入。
我正在使用 pymongo 和 mongodb,我为简单的 find() 和使用 $regexp 运算符的查找提供了用户控制的输入。
如何“清理”这些输入?

【问题讨论】:

标签: python mongodb sql-injection pymongo sanitization


【解决方案1】:

好吧,如果您说的是 ORM 注入,那么您说的是关系数据库系统,而不是真正的 MongoDB 或 NoSQL 系统。 PyMongo 不是 ORM 工具,因此不会发生 ORM 注入。

MongoDB 查找操作不会修改或删除集合中的任何数据。因此,使用不受信任的输入是非常安全的。

正如here 所解释的那样,唯一可能发生的事情是错误的查询可能会通过执行以下操作减慢您的系统速度:

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

这意味着您可以确保在您的代码中,不会通过用户参数传输任何函数。

【讨论】:

  • “这意味着您可以确保在您的代码中,没有函数通过用户参数传输。”是什么意思。请给我们举个例子吗?
  • 我已经给出了例子。确保用户没有写出我在答案中作为 where 语句显示的内容。因此,例如确保 where 字符串不包含子字符串“function()”。
  • 我没有 $where,只有 $regexp。还是我错过了什么?
  • 是的,如果用户输入只是您的正则表达式的一部分,那么您的查询中就不需要担心注入或功能异常!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 2014-11-06
  • 2012-04-23
  • 2018-05-25
相关资源
最近更新 更多