gpt4 book ai didi

c# - SQL 注入(inject)攻击是否可以通过 SqlCommand 以外的任何方式执行?

转载 作者:IT王子 更新时间:2023-10-29 04:37:09 27 4
gpt4 key购买 nike

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

背景:

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

最佳答案

我不会专门针对 SqlCommand - 代码可以使用 DBCommand 或 IDbCommand。它可以包装在像 EF、L2S 或 NHibernate 这样的 ORM 中(它们都提供某种程度的原始访问)。它可以使用诸如“dapper”或 simple.data 之类的东西。或者数据表/数据适配器。您可能有使用遗留 OLEDB 或 ADODB 访问的代码。哎呀,据我们所知,您可以编写自己的低级 TDS API。

所以:它归结为检查数据访问代码,它可以采用多种形式。如果您的部门方法是“直接使用 SqlCommand”,那么事情就会改变。

此外:SQL 注入(inject)并不局限于 .NET - 例如,您可以在原始命令文本或存储过程中创建 SQL 注入(inject)风险即使您参数化,如果 TSQL 确实如此任何类型的串联以生成动态 SQL,通过 EXEC 调用。请注意,sp_executesql 可以提供帮助。

关于c# - SQL 注入(inject)攻击是否可以通过 SqlCommand 以外的任何方式执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484426/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com