2010-07-26 34 views
3

我有一個存儲在SQL Server數據庫中的布爾變量值。這將作爲ASP.NET網頁上的複選框呈現給最終用戶。切換複選框自然會更新數據庫中的值。使用存儲過程從複選框切換布爾值是否有任何安全優勢

我正要刪除在後面的C#代碼中以純文本編寫的SQL查詢,並用存儲過程替換它,以便通過防止SQL注入攻擊來提高安全性。我對注入攻擊的理解是有限的,但肯定無法觸發不安全複選框輸入的攻擊?或者可以嗎?

回答

1

那麼,作爲一個規則,你應該總是使用存儲過程或參數化的SQL。你可以通過點擊複選框來完成嗎?真的,這一切都取決於如何編寫代碼。表面上,我會說不,但有很多可能會影響到這一點。

請記住,它發佈的頁面本質上是向服務器發送文本值。有人可能會發送SQL注入攻擊而不是複選框值。現在,asp.net在處理這個問題上相當出色,但這並不意味着如果代碼被編寫爲繞過asp.net檢查等等,那麼它就不會發生。

我從編程中學到的一件事就是每次我想「這不可能完成」。通常我被證明是錯誤的。我總是採取最安全的安全路線。

1

通過用戶界面進行攻擊的機會更多的是像文本框這樣的輸入字段而不是複選框本身。小心謹慎是件好事,但是使用存儲過程並使用帶參數的命令是處理這種類型攻擊的一種方法。或者,如果您使用SQL,請確保您使用@parameters作爲值,而不是直接在查詢中插入值。

另外編碼值有助於克服一些問題。

HTH。

1

ASP.Net默認會檢查返回的值以確保它獲得期望的結果。然後它將值輸入到YourCheckBox.Checked中,所以返回的值必須是真或假。這並不是說這個複選框是難以理解的 - 沒有人會這樣說,因爲可能有某個人可能仍然會惡意使用它 - 但是網站上的安全風險可能比複選框要大。我會花時間看看文本框,下拉列表和會話。如果你真的覺得其他東西都是完全安全的,你可以返回複選框。

當然,如果你只是使用HTML複選框,那麼它不會檢查返回值,因此不太安全。在這種情況下,我會建議將其更改爲一個asp.net複選框。

相關問題