关于Sql注入,经典的注入语句是‘ or 1=1-- 以下说说如何最大限度的避免注入问题。
一.SQL参数用法1
1.思维导图
属性 | |
ParameterName | 取得或設定 SqlParameter 的名稱。 |
Value | 取得或設定參數的值。 |
SqlDbType | 取得或設定參數的 SqlDbType |
Size | 取得或設定資料行中資料的最大大小 (以位元組為單位)。 |
2.示例代码
1 SqlParameter sqlParameter = new SqlParameter(); ????????????//声明并实例化SQL参数;2 sqlParameter.ParameterName = "@No"; ????????????????????????//设置SQL参数的名称;3 sqlParameter.Value = this.txb_UserNo.Text.Trim(); ??????????//设置SQL参数的长度;4 sqlParameter.SqlDbType = SqlDbType.Char; ???????????????????//设置SQL参数对应的SQL Server数据类型;5 sqlParameter.Size = 10; ????????????????????????????????????//设置SQL参数的长度;6 sqlCommand.Parameters.Add(sqlParameter); ????
显然,Add方法在添加多个SqlParameter时不方便
二.SQL参数用法2
1.示例代码
1 sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim()); ??????//直接调用方法AddWithValue向SQL命令的参数集合添加参数的名称、值;2 sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar; ????????????????????//通过参数名称访问SQL参数,并将密码参数的类型设为变长字符串;3 ???????//SQL参数能自动识别类型;若参数值为字符串,则类型自动设为NVARCHAR,且可在执行时自动转换;但对于相同密码,VARCHAR/NVARCHAR类型所获得的散列值不同,故需手动将SQL参数类型统一设为VARCHAR;
ADO.NET之注入式攻击
原文地址:https://www.cnblogs.com/lidie-/p/9742272.html