論壇答疑點滴 有關sql注入

2021-03-31 14:59:58 字數 1636 閱讀 8422

大家存在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.***中強烈建議通過引數來實現sql而不是sql拼接,因為就算你每乙個都過濾百密難有疏

比如:sqlconnection conn=

new"

conn

"]);

sql***mand ***m

=new

sql***mand(

"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];

***m.parameters.add(parm1);

***m.parameters.add(parm2);

***m.parameters.add(parm3);

conn.open();

***m.executenonquery();

conn.close();

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

論壇答疑點滴 有關sql注入

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

論壇答疑點滴 如何對動態的物件進行操作,屬性付值

問題的具體解釋 資料表1紀錄控制項的名稱,資料表2紀錄控制項的屬性和方法 如何實現對控制項的屬性進行付值,方法進行呼叫 我的意思是 表1 字段 ocxid ocxname 1 textbox 2 combobox 表2 字段 ocxid proid provalue 1 1 text 1 2 top...

有關sql注入

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