试图让这个问题的时候,我得到了这一个是使用Java,并在回答它给了一个Ruby的例子,它似乎是注射使用JSON时只发生? 因为我一个暴露在那里我会尽力的NoSQL和SQL之间的比较,我试图说: 幸福的NoSQL没有SQL注入,因为它不是SQL ...
你可以请给我解释一下:
- 注射了SQL使用Python驱动程序(pymongo)时发生。
- 如何避免它。
- 使用使用登录表单中注释的老办法sql注入的比较。
试图让这个问题的时候,我得到了这一个是使用Java,并在回答它给了一个Ruby的例子,它似乎是注射使用JSON时只发生? 因为我一个暴露在那里我会尽力的NoSQL和SQL之间的比较,我试图说: 幸福的NoSQL没有SQL注入,因为它不是SQL ...
你可以请给我解释一下:
有一对夫妇与注射MongoDB的担忧:
$where
JS注射-根据用户输入大厦JavaScript函数可以导致能表现不同,以你所期望的查询。 在一般的JavaScript函数都没有编程的MongoDB查询一个负责任的方法,并强烈建议不要使用它们,除非绝对必要。 $or
什么的,他们可以很容易地操纵这个能力来改变你的查询。 这当然如果你只是从一组文本字段中获取数据,然后手工创建一个不适$or
从该数据。 作为@Burhan指出注射来自没有消毒的输入。 幸运的是MongoDB的具有面向对象的查询。
与SQL注入的问题来源于单词“SQL”。 SQL是建立串了一个查询语言。 在另一方面MongoDB的实际使用BSON文档指定查询(对象)。 如果你保持基本的常识规则,我给你上面你不应该有问题的攻击媒介,如:
SELECT * FROM tbl_user WHERE ='';DROP TABLE;
此外MongoDB中仅支持每个命令ATM一个操作(不使用eval
,永远不要做,虽然),这样,才不会反正工作...
我想补充一点,这并不适用于数据验证仅注射。
SQL注入无关,与数据库。 它是一种类型的安全漏洞,允许任意的SQL命令的执行,因为目标系统不消毒即是考虑到SQL服务器的SQL。
如果您对NoSQL的与否没关系。 如果您对MongoDB的(或CouchDB的,或XYZ DB)运行的系统,并提供你的前端,用户可以输入记录 - 你没有正确逃生和净化输入从前端来; 你是开放的SQL注入。