首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL注入攻击可以通过SqlCommand以外的任何方式执行吗?

SQL注入攻击可以通过SqlCommand以外的任何方式执行吗?
EN

Stack Overflow用户
提问于 2012-11-21 08:16:41
回答 4查看 1.3K关注 0票数 20

如果我有一个SQL Server数据库的SQL应用程序,是否可以安全地假设如果要进行ASP.NET注入攻击,它将通过SqlCommand类的一个实例?

背景:

我所处的情况是,我继承了一个相当大的web应用程序,该应用程序存在一些SQL注入漏洞。我只是通过查看代码中的其他问题找到了几个漏洞,但我想知道,查找所有SqlCommand注入漏洞的安全方法是不是在所有文件中搜索SQL实例,然后检查它们是否为参数化查询。这是一个可靠的计划吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-21 08:25:22

我不会只看 SqlCommand --代码可以使用DBCommand或IDbCommand。它可以被封装在像EF、L2S或NHibernate这样的ORM中(它们都提供了某种级别的原始访问)。它可以使用像"dapper“或simple.data这样的东西。或者DataTable / DataAdapter。您可能有使用旧版OLEDB或ADODB访问的代码。见鬼,就我们所知,你可以写你自己的低级TDS API。

所以:归根结底就是检查数据访问代码,这可能有很多种形式。如果你的部门方法是“直接使用SqlCommand”,那么事情就不一样了。

另外: SQL注入并不局限于.NET --例如,即使您进行了参数化,也可以在原始命令文本或存储过程TSQL中创建SQL注入风险,如果TSQL执行任何类型的连接以生成要通过EXEC调用的动态SQL。请注意,sp_executesql可以在这方面提供帮助。

票数 20
EN

Stack Overflow用户

发布于 2012-11-21 08:24:19

根据您的数据库模式,您可能还需要检查存储过程中的攻击(假设您使用的是存储过程)。我见过人们在他们的代码中使用参数化的存储过程,但在proc中,他们只使用EXEC来查询:

代码语言:javascript
复制
CREATE PROC Dummy
(
   @Str VARCHAR(50)
)
AS
EXEC ('SELECT * FROM Table Where Column = ''' + @Str + '''')
票数 10
EN

Stack Overflow用户

发布于 2012-11-21 08:19:10

您还需要查找使用或包含SqlCommand的内容。其中包括SqlDataAdapter等。

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

https://stackoverflow.com/questions/13484426

复制
相关文章

相似问题

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