相关疑难解决方法(0)

在SQL Server中动态创建SQL vs参数

如果我要从表中选择一行,我基本上有两个选项,或者像这样

int key = some_number_derived_from_a_dropdown_or_whatever
SqlCommand cmd = new SqlCommand("select * from table where primary_key = " + key.ToString());
Run Code Online (Sandbox Code Playgroud)

或使用参数

SqlCommand cmd = new SqlCommand("select * from table where primary_key = @pk");
SqlParameter param  = new SqlParameter();
param.ParameterName = "@pk";
param.Value         = some_number_derived_from_a_dropdown_or_whatever;
cmd.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

现在,我知道第一种方法因为可能的SQL注入攻击而不受欢迎,但在这种情况下,参数是一个整数,因此不应该真正注入恶意代码.

我的问题是:您是否在生产代码中使用选项1,因为您认为使用安全是因为易于使用和控制插入的参数(如上所述,或者参数是否在代码中创建)?或者你总是使用参数,不管是什么?参数100%注射安全吗?

c# sql-server security sql-injection

3
推荐指数
1
解决办法
1088
查看次数

标签 统计

c# ×1

security ×1

sql-injection ×1

sql-server ×1