在尝试提出这个问题时,我得到了this one --它使用的是Java,在回答中给出了一个Ruby示例,并且似乎只有在使用Json时才会进行注入?因为我有一个公开,我将尝试比较NoSQL和SQL,我试着说:快乐,nosql没有sql注入,因为它不是sql .
请你解释一下:
发布于 2012-10-27 13:54:40
在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,但永远不要这样做),这样无论如何都不会起作用.
我应该补充一点,这不适用于数据验证,只适用于注入。
发布于 2012-10-27 10:30:05
SQL注入与数据库无关。这是一种允许执行任意SQL命令的漏洞,因为目标系统没有清理提供给SQL服务器的SQL。
无论你是否在NoSQL上,都不重要。如果您在mongodb上运行了一个系统(或者couchdb,或者XYZ ),并且您提供了一个前端,用户可以在这里输入记录-而且您不能正确地转义和清理来自前端的输入;您可以接受SQL注入。
https://stackoverflow.com/questions/13099301
复制相似问题