据我所知,sql注入定义是:
SQL注入是黑客使用的一种应用层攻击技术,通过针对基于web的应用程序从组织中窃取数据。
如果表单提交可以保存SQL语句,那么是否应该将其视为SQL注入,直到无法操作任何数据为止?
假设我有一个具有textarea输入的联系人表单。有人认为:
SELECT * FROM users
我的应用程序允许保存这些数据。这是否被视为SQL注入?
发布于 2018-04-08 10:03:07
我不知道您从哪里得到了SQL注入的定义,但它只是部分准确。
维基百科定义要准确得多:
SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中邪恶的SQL语句被插入一个入口字段以供执行(.)
了解SQL注入的关键部分是它的实际工作方式。一个名为“您的常识”的用户写了一个关于那个就在这里。的好的、简单的解释。
简而言之,SQL注入是将SQL代码“注入”到未受保护的SQL语句中的行为--从而允许攻击者查找有关数据库的详细信息,有时甚至可以控制整个数据服务器。
将完整的SQL语句保存在数据库中可能是打开“二阶SQL注入”的大门(Wikipedia,同页:)
当提交的值包含存储而不是立即执行的恶意命令时,就会发生二阶SQL注入。
所以,对你的问题的一个直接的回答是:这取决于。这个可能是一个真正的注入威胁。
您可以看到,为了成功地执行二阶SQL注入,仅在数据库中存储SQL语句是不够的--您的应用程序还必须执行它们(因为攻击者无法直接访问您的数据库。如果是这样的话,他们就不需要再乱搞SQL注入了。
使用参数化查询可以完全消除SQL注入风险。
只有当应用程序被设计为存储完整的SQL语句并运行它们时,二阶SQL注入风险才是相关的。
如果您的应用程序就是这样设计的,那么您必须保护自己,不允许用户编写自由文本sql,而是为他们提供一个安全的接口,而后端将为他们生成参数化查询。
https://stackoverflow.com/questions/49716553
复制相似问题