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直接用添加的值进行数据比较,因此不会有注入漏洞攻击。

posted @ 2011-12-14 10:58  zyswtwang  阅读(330)  评论(0编辑  收藏  举报