SqlCommand的Parameters属性

原创 小道  2018-08-28 20:36:43  阅读 443 次 评论 0 条
摘要:

SqlCommand的Parameters属性:获得与该命令关联的参数集合            using (SqlConnection conn =new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDBFilename=|DataDirecto

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("用户名或密码错误!");
                    }
                }
            }

错误写法输出结果:

image.png

错误的写法 获得的是

image.png

where 条件就变成了 帐号=admin 并且 密码=1 或者 1=1  这样就为真了。那么就返回一个大于0的数了。就登录成功了。


正确写法输出结果:

image.pngimage.png


本文地址:https://www.daobk.com/post/84.html
版权声明:本文为原创文章,版权归 小道 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?