System.Data.DataRow 可以用于 SQL 注入吗?[复制]

Can System.Data.DataRow used for SQL injection? [duplicate]

提问人:kovacs lorand 提问时间:8/29/2022 更新时间:8/29/2022 访问量:249

问:

我知道对于 SqlCommand,在将参数传递给查询时,我必须使用 SqlParameter,以避免 SQL 注入。但是 DataRow 呢?例如:

row.UserComment = tbUserComment.Text;

此处的“row”是一个 System.Data.DataRow,它将使用 SqlDataAdapter 保存到 DB。“tbUserComment.Text”是由用户填充的 ASP.NET 文本框。 这可以用于SQL注入吗?如果是,那么我能做些什么来防止它?

C# ado.net SQL 注入 数据行

评论

0赞 kovacs lorand 8/29/2022
这个问题是关于别的。这是关于仅在内存中运行而不在数据库上运行的 Select 命令,我的问题是关于发送到数据库的实际数据。
0赞 user18387401 8/29/2022
如果你使用数据适配器保存内容,那么你使用的是参数,所以显然没有机会进行SQL注入。仅当生成包含文本值的 SQL 代码时,才会发生 SQL 注入。DataTable
0赞 Charlieface 8/30/2022
@D.Stanley:那个副本是错误的。这是指使用 ,这与(语法和使用的机制)无关,而是将 a 传递给DataTable.SelectDataRowDataAdapter

答:

2赞 Bron Davies 8/29/2022 #1

请参阅本文档:https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldataadapter?view=dotnet-plat-ext-6.0

InsertCommand、DeleteCommand 和 UpdateCommand 是通用模板,通过参数机制自动填充每个修改行中的单个值。

因此,这将自动参数化,这意味着如果遵循此模式,则不应有 SQL 注入的可能性。DataRow