首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果sql语句被保存到表中,那么它应该被视为sql注入吗?

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

Stack Overflow用户
提问于 2018-04-08 09:45:06
回答 1查看 45关注 0票数 0

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

SQL注入是黑客使用的一种应用层攻击技术,通过针对基于web的应用程序从组织中窃取数据。

如果表单提交可以保存SQL语句,那么是否应该将其视为SQL注入,直到无法操作任何数据为止?

假设我有一个具有textarea输入的联系人表单。有人认为:

代码语言:javascript
运行
复制
SELECT * FROM users

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-08 10:03:07

我不知道您从哪里得到了SQL注入的定义,但它只是部分准确。

维基百科定义要准确得多:

SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中邪恶的SQL语句被插入一个入口字段以供执行(.)

了解SQL注入的关键部分是它的实际工作方式。一个名为“您的常识”的用户写了一个关于那个就在这里。的好的、简单的解释。

简而言之,SQL注入是将SQL代码“注入”到未受保护的SQL语句中的行为--从而允许攻击者查找有关数据库的详细信息,有时甚至可以控制整个数据服务器。

将完整的SQL语句保存在数据库中可能是打开“二阶SQL注入”的大门(Wikipedia,同页:)

当提交的值包含存储而不是立即执行的恶意命令时,就会发生二阶SQL注入。

所以,对你的问题的一个直接的回答是:这取决于。这个可能是一个真正的注入威胁。

您可以看到,为了成功地执行二阶SQL注入,仅在数据库中存储SQL语句是不够的--您的应用程序还必须执行它们(因为攻击者无法直接访问您的数据库。如果是这样的话,他们就不需要再乱搞SQL注入了。

使用参数化查询可以完全消除SQL注入风险。

只有当应用程序被设计为存储完整的SQL语句并运行它们时,二阶SQL注入风险才是相关的。

如果您的应用程序就是这样设计的,那么您必须保护自己,不允许用户编写自由文本sql,而是为他们提供一个安全的接口,而后端将为他们生成参数化查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49716553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档