看了傳志播客的視頻,了解到了SQL的漏洞注入問題。在這里記錄一下。
<PRe>cmd.CommandText = @"select count(*)" from UserInfo where UserName = '"+txtUserName.Text+"'and UserPwd = '"+txtPwd.Text+"'";<code>這樣寫其實是存在SQL注入漏洞問題的,在登陸界面輸入a’ or x=x – ,然后再輸入任意密碼就能成功登陸。因為,在sql語句中–是注釋符會注釋掉and后面的語句,然后where后面的語句就變成了:
where 'a'or x=x--后面全被注釋掉x=x在sql中結(jié)果恒為真,所以不管輸入用戶名和密碼正確與否都能登陸,在以后編寫代碼的時候一定要注意這個問題。
而正確的寫法,應(yīng)該是這樣的
<pre>cmd.CommandText = @"select count(*)fro UserInfo where UserName=@UserName and UserPwd=@UserPwd";//使用了參數(shù)之后,怎樣給參數(shù)賦值。cmd.Parameters.Add("@UserName",txtUserName.Text);cmd.Parameters.Add("@UserPwd",txtPwd.Text);//陷阱:當(dāng)參數(shù)值為0的,會把它SqlDbType//用下面這個方法更保險。cmd.Parameters.AddWithValue();<code>新聞熱點
疑難解答