SQL注入漏洞攻击
* 登陆判断:select * from T_Users where UserName=... and Password=...,将参数拼到SQL语句中。
*构造恶意的Password: 'or'1'='1
if(reader.Read())
{
Response.Write("登录成功!");
}
else
{
Response.Write("登录失败!");
}
* 防范注入漏洞攻击的方法:不使用SQL语句拼接,通过参数赋值。
* SQL语句使用@UserName表示“此处用参数代替”,向SqlCommand的Patameters中添加参数
cmd.CommandText="select * from T_User where UserName=@UserName and Password=@Password";
cmd.Parameters.Add(new SqlParameters("UserName","bobo"));
cmd.Parameters.Add(new SqlParameters("Password","123"));
*参数在SQLServer内部不是简单的字符串替换,SQLServer直接用添加的值进行数据比较,因此不会有注入漏洞攻击