2013-02-03 48 views
0

我认为你知道sql注入,和nosql相同,称为orm注入。
我使用pymongo和mongodb,我有一个简单的find()和$ regexp操作符查找的用户控制输入。
如何“清理”输入?Pymongo ORM注射?消毒输入

+0

我在这写了另一个答案:http://stackoverflow.com/questions/13099301/nosql-injection-in-python/13100786#13100786 – Sammaye

回答

1

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

MongoDB查找操作不会修改或删除集合中的任何数据。所以你对于不可信的输入很安全。

可能发生,因为解释here的唯一的事情,是一个坏的查询可能会降低系统速度下降了做这样的事情:

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

这意味着你可以在你的代码确保,没有功能通过用户参数传输。

+0

你是什么意思,“这意味着你可以确保你的代码,没有功能通过用户参数传输。“请你能给我们举个例子吗? – tapioco123

+0

我已经举了一个例子。确保用户不会像我在答案中所显示的那样写一些东西来作为where语句。因此,例如,确保where字符串不包含子字符串“function()”。 – thomas

+0

我没有$ where,只是e $ regexp。或者我错过了什么? – tapioco123