SqlCommand的Parameters属性
SqlCommand的Parameters属性:获得与该命令关联的参数集合
using (SqlConnection conn =new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDBFilename=|DataDirectory|\Database1.mdf;integrated Security=True;User Instance=false"))
{
conn.Open();//打开数据库
using (SqlCommand cmd = conn.CreateCommand())
{
//错误写法开始——
//cmd.CommandText = "select count(*) from 用户 where 帐号='" + yhm + "'"+"and 密码='" + mm + "'"; //错误示例。如果密码输出: 1' or '1' = '1 可以登录成功。造成SQL注入漏洞攻击
//错误写法结束——
//正确写法开始——
cmd.CommandText = "select count(*) from 用户 where 帐号=@UN and 密码=@P";
cmd.Parameters.Add(new SqlParameter("UN",yhm));
cmd.Parameters.Add(new SqlParameter("P",mm));
//正确写法结束——
int i = Convert.ToInt32(cmd.ExecuteScalar());
if (i > 0)
{
Console.WriteLine("登录成功!");
}
else
{
Console.WriteLine("用户名或密码错误!");
}
}
}错误写法输出结果:
错误的写法 获得的是
where 条件就变成了 帐号=admin 并且 密码=1 或者 1=1 这样就为真了。那么就返回一个大于0的数了。就登录成功了。
正确写法输出结果:
