在判斷使用者登入時如果用了string.format字串拼接的方式,使用者有可能通過相應的拼接,去注視掉要求驗證的**;這樣就有了漏洞;然而在net中通過引數的方式(本質是儲存過程對這樣的行為進行防範;)
protected void button1_click(object sender, eventargs e)
' and fpassword=''",txtusername.text.trim(),txtpassword.text);
//以上這種拼接sql語句的方法有sql注入漏洞攻擊的問題 jk' or 1=1 --
//如果避免注入漏洞攻擊呢?使用引數的方法或儲存過程的方法
string sql = "select count(*) from t_users where fusername=@username and fpassword=@password";
using (sqlcommand cmd=new sqlcommand(sql,con))
;cmd.parameters.addrange(pms);
//通過監視發現,ado的引數替換的方法避免了注入漏洞攻擊,它通過乙個儲存過程實現了把輸入的任何字串作為字串處理的形式。
//exec sp_executesql n'select count(*) from t_users where fusername=@username and fpassword=@password',n'@username nvarchar(13),@password nvarchar(4)',@username=n'jk'' or 1=1 --',@password=n'sfds'
//在sql中,把』單引號轉意為字串的方法是前面再加乙個單引號。
//在sql中的引數都是以@開始的,
int r=convert.toint32(cmd.executescalar());//把sql語句送到資料伺服器端執行
con.close();//可以提前關閉鏈結,提高效率。
if (r > 0)
else
防止sql注入漏洞方法
什麼是sql注入?通過構建特殊的輸入作為引數傳入web應用程式,而這些輸入大都是sql語法裡的一些組合 通過執行sql語句進而執行攻擊者所要的操作,其主要原因是程式沒有細緻地過濾使用者輸入的資料,致使非法資料侵入系統 例子 比如在乙個登入介面,要求輸入使用者名稱和密碼,可以這樣輸入實現免帳號登入 使...
引數化防止注入
string strsql insert into student name,gender,banji,student id,phone,qq,describe,time values name,gender,banji,student id,phone,qq,describe,time sqlpa...
防止SQL注入的引數化方法
最好的方法就是用引數化sql sqlconnection cn new sqlconnection 連線字串 sqlcommand cmd new sqlcommand insert into 表 values name,pwd cn cmd.paramters.addwithvalue id te...