SQL注入漏洞与参数化查询
登录判断:
string strConnectionString ="select * from T_User where UserName = '"+strUserName+"' and PassWord ='"+strPassWord+"'";
将参数拼到sql语句中
用户构造恶意的password: ‘ or ‘1’=1
能骗过登录,造成sql注入
防范注入漏洞攻击的方法:不使用sql语句拼接,通过参数赋值
SQL语句使用@UserName表示“此处用参数代替”,想SqlCommand的Parameters中添加参数
cmd.CommandText="select * from T_User where UserName=@UserName and PassWord = @PassWord";
cmd.Parameters.Add(new SqlParameters("UserName","admin"));
cmd.Parameters.Add(new SqlParameters("PassWord",strPassWord));
参数在SQLServer内部不是简单的字符串替换,SQLServer直接用添加的值进行数据比较,因此不会有注入漏洞攻击。