2023年6月21日发(作者:)

Sql注⼊和参数化查询简单SQL注⼊  之前写的⼀篇博客,⾥⾯有⼀个,是通过字符串拼接完成对数据库的查询的。当我在⽤户名框中随便输个字符,在密码框中也随便输⼊⼏个字符并在后⾯加上【’ or ‘1’ = ‘1】,点击登录,登录成功。因为1=1永远成⽴,所以where后⾯的字符串永远返回true。参数化查询private void btnLogin_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection("server=.;database=Test;uid=sa;pwd=jujianfei"); SqlCommand cmd = new SqlCommand("select UserName,Password from Login where UserName=@ass and Password=@add", conn); //第⼀种写法 //SqlParameter sp = new SqlParameter("@ass", ()); //SqlParameter sp2 = new SqlParameter("@add", ()); //(sp); //(sp2); //第⼆种写法,特殊情况下报错 //(new SqlParameter("@ass", ())); //(new SqlParameter("@add", ())); //第三种写法 //SqlParameter[] spa = new SqlParameter[]{ // new SqlParameter("@ass", ()), // new SqlParameter("@add", ()) //}; //ge(spa); //第四种写法 //hValue("@ass", ()); //hValue("@add", ()); //第五种写法,参数可以为输出参数 //SqlParameter sp = new SqlParameter("@ass", ar); //SqlParameter sp2 = new SqlParameter("@add", ); // = (); // = (); //(sp); //(sp2); //第六种写法 SqlParameter sp = new SqlParameter("@ass", ar) { Value = () }; SqlParameter sp2 = new SqlParameter("@add", ) { Value = () }; (sp); (sp2); (); (eScalar().ToString());}参数化解决了注⼊的问题,这六种参数化查询⽅法中,⼩项⽬中⼀般⽤第⼆种;⼤项⽬⽤第五种。

2023年6月21日发(作者:)

Sql注⼊和参数化查询简单SQL注⼊  之前写的⼀篇博客,⾥⾯有⼀个,是通过字符串拼接完成对数据库的查询的。当我在⽤户名框中随便输个字符,在密码框中也随便输⼊⼏个字符并在后⾯加上【’ or ‘1’ = ‘1】,点击登录,登录成功。因为1=1永远成⽴,所以where后⾯的字符串永远返回true。参数化查询private void btnLogin_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection("server=.;database=Test;uid=sa;pwd=jujianfei"); SqlCommand cmd = new SqlCommand("select UserName,Password from Login where UserName=@ass and Password=@add", conn); //第⼀种写法 //SqlParameter sp = new SqlParameter("@ass", ()); //SqlParameter sp2 = new SqlParameter("@add", ()); //(sp); //(sp2); //第⼆种写法,特殊情况下报错 //(new SqlParameter("@ass", ())); //(new SqlParameter("@add", ())); //第三种写法 //SqlParameter[] spa = new SqlParameter[]{ // new SqlParameter("@ass", ()), // new SqlParameter("@add", ()) //}; //ge(spa); //第四种写法 //hValue("@ass", ()); //hValue("@add", ()); //第五种写法,参数可以为输出参数 //SqlParameter sp = new SqlParameter("@ass", ar); //SqlParameter sp2 = new SqlParameter("@add", ); // = (); // = (); //(sp); //(sp2); //第六种写法 SqlParameter sp = new SqlParameter("@ass", ar) { Value = () }; SqlParameter sp2 = new SqlParameter("@add", ) { Value = () }; (sp); (sp2); (); (eScalar().ToString());}参数化解决了注⼊的问题,这六种参数化查询⽅法中,⼩项⽬中⼀般⽤第⼆种;⼤项⽬⽤第五种。