.net 是否使用数据类型int所需的参数进行传递以防止sql注入
根据再次提出的问题: 我们真的需要将数字数据类型变量值作为参数传递以防止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
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。它们基本上和整数类型一样安全,除非有人可以更改您的区域性设置(),但它们更可能遇到转换问题。