天天看點

何種情況下sql語句參數化

       可能很多人遇到過這種情況,自己辛辛苦苦做的網站被黑客輕而易舉的通過Sql注入後所攻擊,導緻整個網站甚至整個伺服器的癱瘓。針對這種情況,我們對Sql語句參數化,這樣就可以有效的防止Sql注入。

據我所知,Sql語句參數化主要是針對寫Sql語句時傳入的字元串變量進行參數化。為什麼要說是字元串變量呢?因為我們寫執行Sql語句的方法時,對于傳入的變量的類型都有定義,比如在資料表DT_Catagory中的CatagoryId字段類型是int類型,我們在定義一個通過CatagoryId來調取該條記錄的詳細資訊的方法時,會寫成這樣:

public int DataTable GetCatagoryInfoById(int categoryId)

{……

}

當我們調用該方法時,需要傳入的變量必須是int類型的變量,該方法才能執行,否則,程式會報錯,進而執行不了該方法内的代碼,也就執行不了裡邊的Sql語句。

畢竟在寫Sql語句時對其進行參數遠遠沒有不進行參數化那樣簡單。是以能不進行參數化就可以适當的偷個懶J。比如上邊的例子裡我們在寫Sql語句時就可以省去參數化,可以把裡邊的Sql語句寫成這樣:

String sql=”select * from DT_Catagory where CategoryId = ” + categoryId;

上邊這個隻是針對傳入的變量是int類型時舉了一個簡單的例子,對于其他非字元串類型的,比如說bool,自定義枚舉類型等等。都可以這樣的來偷懶。

以上是我的一些觀點,有欠缺的地方,歡迎大家一起來探讨