上下文
学习。
问题
当我们使用sql时,需要转义用户输入,或者更好地使用准备好的语句来避免注入。
这种需求是否是SQL语言中的缺陷?
假设我有一个http服务器,并将用户输入直接放在二进制文件中,有可能注入吗?
当我需要再读一遍的时候,翻开、翻开、关闭和完成工作,不是吗?不过,我猜还是不会受到攻击的(我不想在客户端浏览器中使用消毒来避免xss,只需要注入)。
最后,sql也将字符串放入文件中。
那有什么区别呢?sql语言弱吗?我的方法有危险吗?为什么?
发布于 2014-08-28 03:36:37
发布于 2014-08-28 03:43:25
这在很大程度上取决于您如何解释用户输入。如果您只是在稍后阶段存储用户输入以准确地中继,那么您可能不会介意,但是在您的示例中,如果您读取了输出,然后将其输出到一个网页上,那么您将打开自己以接受来自用户的恶意输入。假设您从输入字段中读取,然后将其直接输出到html文件中,并提供给它,比方说作为一个<p>user text</p>
。如果恶意用户知道您的布局,他们很容易在其中插入一些javascript。更糟糕的是,如果您正在使用此数据生成(例如) .php
文件,恶意用户可能会手工完成将在您的服务器上运行的东西。任何有一层解释的地方,你都有注射的危险。
发布于 2014-08-28 05:07:39
如果用户输入被执行或者是正在执行的东西的一部分(sql,html,shell脚本.)你应该永远逃避它。如果你只是在读价值,就没有理由逃避它。
https://stackoverflow.com/questions/25547777
复制