有關sql注入

來源:互聯網
上載者:User
大家存在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 SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["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();


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




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。