如果将sql语句保存到表中,那么它应该视为sql注入吗?

时间:2018-04-08 09:45:06

标签: sql-server sql-injection

据我所知,sql注入定义是:

SQL注入是黑客用来通过定位基于Web的应用程序从组织窃取数据的应用层攻击技术

如果表单提交可以保存SQL语句,那么它应该被视为SQL注入,直到无法处理任何数据为止?

假设我有一个带有textarea输入的联系表格。有人提出了价值:

SELECT * FROM users

我的应用程序允许保存这些数据。这被视为SQL注入吗?

1 个答案:

答案 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>