大家存在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下拉框也...