用引數的形式防止注入漏洞

2022-09-23 08:48:09 字數 998 閱讀 3828

在判斷使用者登入時如果用了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...