淺析ASP.NET Web安全性
一、ASP.NET 開發人員應當始終堅持的做法
如果您正在閱讀本文,可能就不需要再向您灌輸 Web 應用程序中的安全性愈來愈重要這一事實了。您需要的可能是一些有關如何在 ASP.NET 應用程序中實現安全性的實際建議。壞消息是,沒有任何開發平臺 — 包括 ASP.NET在內 — 能夠保證一旦采用了該平臺,您就能夠編寫百分百安全的代碼。誰要是這么說,一準在撒謊。好消息是,就 ASP.NET 來說,ASP.NET,特別是版本 1.1 和即將發行的版本 2.0,集成了一些便于使用的內置防御屏障。
光是應用所有這些功能并不足以保護 Web 應用程序,使其免受任何可能和可預見的攻擊。但是,如果與其他防御技巧和安全策略相結合,內置的 ASP.NET 功能將可以構成一個強大的工具包,有助于確保應用程序在安全的環境中運行。
ASP.NET Web安全性是各種因素的總和,是一種范圍遠超單個應用程序的策略的結果,這種策略涉及數據庫管理、網路配置,以及社會工程和 phishing.本文的目的在于說明 ASP.NET 開發人員為了將安全標準保持到合理的高度,所應始終堅持的做法。這也就是安全性最主要的內容:保持警惕,永不完全放松,讓壞人越來越難以發起黑客攻擊。
下面我們來看看 ASP.NET 提供了哪些可以簡化這項工作的功能。
二、威脅的來源
列表中顯現出來的關鍵性事實有哪些?在我看來,起碼有以下三點:
1.無論您何時將何種用戶輸入插入瀏覽器的標記中,您都潛在地將自己暴露在了代碼注入攻擊(任何 SQL 注入和 XSS 變種)之下。
2.必須以安全的方式實現數據庫訪問,就是說,應當為數據庫使用盡可能少的權限,并通過角色來劃分各個用戶的職責。
3.永遠都不通過網絡發送敏感數據(更別說是明文了),并且必須以安全的方式將敏感數據存儲在服務器上。
有意思的是,上面的三點分別針對的是ASP.NET Web安全性的三個不同方面,而這三個方面結合起來,才是唯一的一種生成防攻擊、防篡改應用程序的合理方式。ASP.NET Web安全性的各個層面可以總結如下:
1.編碼實踐:數據驗證、類型和緩沖區長度檢查,防篡改措施
2.數據訪問策略:使用決策來保護可能最弱的帳戶,使用存儲過程或者至少是參數化的命令。
3.有效的存儲和管理:不將關鍵性數據發送到客戶端,使用哈希代碼來檢測操作,對用戶進行身份驗證并保護標識,應用嚴格的密碼策略如您所看到的,只有可以通過開發人員、架構師和管理員的共同努力,才可以產生安全的應用程序。請不要假定您能夠以其他方式達到同樣目的。
編寫 ASP.NET 應用程序時,您并不是獨自面對黑客大軍:唯一的武器是通過自己的大腦、技能和手指鍵入的代碼行。ASP.NET 1.1 和更高版本都會施加援手,它們具有一些特定的功能,可以自動提高防御以上列出的某些威脅的屏障。下面我們對它們進行詳細的檢視。
三、ViewStateUserKey
從 ASP.NET 1.1 開始引入,ViewStateUserKey 是 Page 類的一個字符串屬性,只有很少數開發人
【編輯推薦】