据我所知,sql注入定义是:
SQL注入是黑客用来通过定位基于Web的应用程序从组织窃取数据的应用层攻击技术
如果表单提交可以保存SQL语句,那么它应该被视为SQL注入,直到无法处理任何数据为止?
假设我有一个带有textarea输入的联系表格。有人提出了价值:
SELECT * FROM users
我的应用程序允许保存这些数据。这被视为SQL注入吗?
答案 0 :(得分:2)
我不知道你在哪里有这个SQL注入的定义,但它只是部分准确。
Wikipedia's定义更准确:
SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中将恶意SQL语句插入到输入字段中以供执行(...)
了解SQL注入的关键部分是它实际上是如何工作的。名为“你的常识”的用户写了关于right here.
的简单明了的解释简而言之,SQL注入是将SQL代码“注入”到未受保护的SQL语句中的行为 - 从而允许攻击者查找有关数据库的详细信息,有时甚至可以使攻击者能够控制整个数据服务器
在数据库中保存完整的SQL语句可能会对所谓的“二阶SQL注入”(维基百科,同一页面:)保持敞开大门。
当提交的值包含存储而非立即执行的恶意命令时,会发生二阶SQL注入。
所以,直接回答你的问题是:这取决于你。 可能是真正的SQL注入威胁。
您会看到,为了成功执行二阶SQL注入,仅仅在数据库中存储SQL语句是不够的 - 您的应用程序也必须执行它们(因为攻击者无法直接访问您的数据库。如果他们这样做了,他们不再需要乱用SQL注入了)。
使用参数化查询可以完全消除SQL注入风险。
二阶SQL注入风险仅在您的应用程序旨在存储完整的SQL语句然后运行它们时才相关 如果您的应用程序是为此而设计的,那么您必须通过不允许用户编写自由文本sql来保护自己,而是为他们提供安全地执行它的接口,而后端将为它们生成参数化查询。 / p>