有關sql注入

2021-04-17 01:17:16 字數 1594 閱讀 7929

大家存在5點誤區:

1、sql注入比較難防,需要替換select,delete等一打字元

其實對於字元型替換再多都沒有替換單引號為兩個單引號來的好!對於數字型替換再多都沒有用,一定要型別轉換。

2、忽略dropdownlist傳來的東西

其實是不對的,一切客戶端的東西都是不可信任的,select下拉框也是!因為可以自己做乙個htm提交到伺服器。

3、access比sqlserver不安全

安全不安全關鍵看怎麼用,如果sqlserver還是像access一樣用,乙個sa帳戶的話,很明顯,sqlserver比access不安全,可以直接得到表名和欄位名!access反而倒安全點了,因為只能通過逐位猜解得到。

4、**沒有顯示出錯資訊就說明**是安全的

當有記錄的時候顯示記錄,沒有記錄的時候顯示找不到任何記錄,通過這兩種狀態就可以猜解欄位名了,所以網頁不出錯不能說明是安全的

5、忽略post提交的資訊

很多人對url上傳遞的東西過濾嚴格,對於post的東西不理不睬是不對的,post的東西更加容易被注入,因為一般字段比較多

在asp.net中強烈建議通過引數來實現sql而不是sql拼接,因為就算你每乙個都過濾百密難有疏

比如:

sqlconnection conn=

new"

conn

"]);

sqlcommand comm

=new

sqlcommand(

"update tb1 set vname=@vname,iage=@iage where id=@id

",conn);

sqlparameter parm1

=new

sqlparameter(

"@vname

",sqldbtype.nvarchar,

50);

parm1.value

=((textbox)e.item.findcontrol(

"name

")).text;

sqlparameter parm2

=new

sqlparameter(

"@iage

",sqldbtype.int);

parm2.value

=((textbox)e.item.findcontrol(

"age

")).text;

sqlparameter parm3

=new

sqlparameter(

"@id

",sqldbtype.int);

parm3.value

=this

.datagrid1.datakeys[e.item.itemindex];

comm.parameters.add(parm1);

comm.parameters.add(parm2);

comm.parameters.add(parm3);

conn.open();

comm.executenonquery();

conn.close();

這樣的**看起來舒服而且又安全,何樂不為?

有關sql注入

所謂sql注入,就是通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意的 sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,...

有關sql注入閒談

inband 資料經由sql 注入的通道取出,這是最直接的一種攻擊,通過sql注入獲取的資訊直接反映到應用程式的web頁面上 out of band 資料通過不同於sql 注入的方法獲得 譬如通過郵件等 推理 這種攻擊時說並沒有真正的資料傳輸,但攻擊者可以通過傳送特定的請求,重組返回的結果從而得到一...

論壇答疑點滴 有關sql注入

大家存在5點誤區 1 sql注入比較難防,需要替換select,delete等一打字元 其實對於字元型替換再多都沒有替換單引號為兩個單引號來的好!對於數字型替換再多都沒有用,一定要型別轉換。2 忽略dropdownlist傳來的東西 其實是不對的,一切客戶端的東西都是不可信任的,select下拉框也...