Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 必须将收到的无参数查询转换为自动参数化查询。如果在客户机中正确参数化查询,则可以避免每次尝试。如果每秒有大量的失败的自动参数甚至更糟糕,这意味着查询将进入优化和执行计划生成的整个周期。现在,这是一个正确的答案+1大多数答案都使用注入参数,但我不接受这一点,_C#_Sql Server_Security_Sql Injection - Fatal编程技术网

C# 必须将收到的无参数查询转换为自动参数化查询。如果在客户机中正确参数化查询,则可以避免每次尝试。如果每秒有大量的失败的自动参数甚至更糟糕,这意味着查询将进入优化和执行计划生成的整个周期。现在,这是一个正确的答案+1大多数答案都使用注入参数,但我不接受这一点,

C# 必须将收到的无参数查询转换为自动参数化查询。如果在客户机中正确参数化查询,则可以避免每次尝试。如果每秒有大量的失败的自动参数甚至更糟糕,这意味着查询将进入优化和执行计划生成的整个周期。现在,这是一个正确的答案+1大多数答案都使用注入参数,但我不接受这一点,,c#,sql-server,security,sql-injection,C#,Sql Server,Security,Sql Injection,必须将收到的无参数查询转换为自动参数化查询。如果在客户机中正确参数化查询,则可以避免每次尝试。如果每秒有大量的失败的自动参数甚至更糟糕,这意味着查询将进入优化和执行计划生成的整个周期。现在,这是一个正确的答案+1大多数答案都使用注入参数,但我不接受这一点,除非有人能向我展示一个有效的基于整数的注入!您的回答Remus,很可能会让我在任何情况下都使用参数(即使我们的数据库每秒看不到数千个请求),谢谢 int key = some_number_derived_from_a_dropdown_or_


必须将收到的无参数查询转换为自动参数化查询。如果在客户机中正确参数化查询,则可以避免每次尝试。如果每秒有大量的
失败的自动参数
甚至更糟糕,这意味着查询将进入优化和执行计划生成的整个周期。

现在,这是一个正确的答案+1大多数答案都使用注入参数,但我不接受这一点,除非有人能向我展示一个有效的基于整数的注入!您的回答Remus,很可能会让我在任何情况下都使用参数(即使我们的数据库每秒看不到数千个请求),谢谢
int key = some_number_derived_from_a_dropdown_or_whatever
SqlCommand cmd = new SqlCommand("select * from table where primary_key = " + key.ToString());
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);
-- Not vulnerable to injection as long as you trust int and int.ToString()
int key = some_number_derived_from_a_dropdown_or_whatever ;
SqlCommand cmd = new SqlCommand("EXEC sp_to_retrieve_row " + key.ToString()); 

-- Vulnerable to injection all of a sudden
string key = some_number_derived_from_a_dropdown_or_whatever ;
SqlCommand cmd = new SqlCommand("EXEC sp_to_retrieve_row " + key.ToString());