gpt4 book ai didi

c# - 使用参数化的 SqlCommand 是否可以使我的程序免受 SQL 注入(inject)的影响?

转载 作者:IT王子 更新时间:2023-10-29 04:00:05 24 4
gpt4 key购买 nike

我知道 SQL injection is rather dangerous .现在,在我的 C# 代码中,我使用 SqlCommand class 编写参数化查询。 :

SqlCommand command = ...;
command.CommandText = "SELECT * FROM Jobs WHERE JobId = @JobId;";
command.Parameters.Add("@JobId", SqlDbType.UniqueIdentifier ).Value = actualGuid;
command.ExecuteNonQuery();

这会自动使我的代码免受 SQL 注入(inject)的影响吗?我需要做一些额外的事情吗?

最佳答案

我想说的是您的参数化查询的特定且可能规范的示例,是的,这就足够了。

然而,人们有时会这样写代码

cmd.CommandText = string.Format("SELECT * FROM {0} WHERE col = @col;", tableName);
cmd.Parameters.Add("@col", ...);

因为根本没有办法将表名本身作为参数传递,并且有时存在这样做的愿望 - 无论是否被误导。看起来它经常被忽视,tableName(除非可能只从一组静态/常量值中读取,这些值不是从任何输入派生的)确实允许 SQL 注入(inject)。

关于c# - 使用参数化的 SqlCommand 是否可以使我的程序免受 SQL 注入(inject)的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7174792/

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