Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
.net 是否使用数据类型int所需的参数进行传递以防止sql注入_.net_Sql Injection - Fatal编程技术网

.net 是否使用数据类型int所需的参数进行传递以防止sql注入

.net 是否使用数据类型int所需的参数进行传递以防止sql注入,.net,sql-injection,.net,Sql Injection,根据再次提出的问题: 我们真的需要将数字数据类型变量值作为参数传递以防止sql注入吗 我有两个示例函数,一个带参数,另一个不带参数 function CheckThis(int UIN) { var connect = ConfigurationManager.ConnectionStrings["NorthWind"].ToString(); var query = "Select * From Products Where ProductID = @ProductID"; usi

根据再次提出的问题: 我们真的需要将数字数据类型变量值作为参数传递以防止sql注入吗

我有两个示例函数,一个带参数,另一个不带参数

function CheckThis(int UIN)
{
  var connect = ConfigurationManager.ConnectionStrings["NorthWind"].ToString();
  var query = "Select * From Products Where ProductID = @ProductID";
  using (var conn = new SqlConnection(connect))
  {
    using (var cmd = new SqlCommand(query, conn))
    {
      cmd.Parameters.Add("@ProductID", SqlDbType.Int);
      cmd.Parameters["@ProductID"].Value = UIN;
      conn.Open();
      //Process results
    }
  }
}
或者,你的跟踪是否正常

function CheckThis(int UIN)
{
  var connect = ConfigurationManager.ConnectionStrings["NorthWind"].ToString();
  var query = "Select * From Products Where ProductID = " + UIN;
  using (var conn = new SqlConnection(connect))
  {
    using (var cmd = new SqlCommand(query, conn))
    {
      //cmd.Parameters.Add("@ProductID", SqlDbType.Int);
      //cmd.Parameters["@ProductID"].Value = UIN;
      conn.Open();
      //Process results
    }
  }
}

您不需要这样做来停止SQL注入攻击1。然而:

  • 如果将SQL与值分离,则代码更干净
  • 如果以后将类型从
    int
    更改为其他类型,则您将面临注入攻击的风险,并且完全有可能在代码审查中遗漏该类型
  • 它避免了涉及意外的数千个分隔符等的数字到字符串转换问题
简而言之,我肯定仍然会使用参数



1,除非攻击者也可以影响您的区域设置。此时,.

您不需要这样做来停止SQL注入攻击1。然而:

  • 如果将SQL与值分离,则代码更干净
  • 如果以后将类型从
    int
    更改为其他类型,则您将面临注入攻击的风险,并且完全有可能在代码审查中遗漏该类型
  • 它避免了涉及意外的数千个分隔符等的数字到字符串转换问题
简而言之,我肯定仍然会使用参数



1,除非攻击者也可以影响您的区域设置。在这一点上,.

gr8。。。列出了使用itI的优点,不知道十进制、bignum和浮点类型是否相同?@Panzercrisis:是的,绝对如此。参数化只是一个简单的方法。他们能被黑客攻击吗?@Panzercrisis:Ah。它们基本上和整数类型一样安全,除非有人可以更改您的区域性设置(),但它们更可能遇到转换问题。gr8。。。列出了使用itI的优点,不知道十进制、bignum和浮点类型是否相同?@Panzercrisis:是的,绝对如此。参数化只是一个简单的方法。他们能被黑客攻击吗?@Panzercrisis:Ah。它们基本上和整数类型一样安全,除非有人可以更改您的区域性设置(),但它们更可能遇到转换问题。