1.ASP.NET Web Forms開發(fā)人員
(1)因為ASP.NET MVC不像ASP.NET Web Forms那樣提供了很多自動保護機制來保護頁面不受惡意用戶的攻擊,所以閱讀本博客來了解這方面的問題,更明確的說法是:ASP.NET Web Forms致力于使應(yīng)用程序免受攻擊。例如:
1)服務(wù)器組件對顯示的值和特性進行HTML編碼,以幫助阻止XSS攻擊。
2)加密和驗證試圖狀態(tài),從而幫助阻止篡改提交的表單。
3)請求驗證(%@page validaterequest=”true”%)截獲看起來是惡意的數(shù)據(jù)并提出警告(這是MVC框架默認開啟的保護)。
4)事件驗證幫助組織注入攻擊和提交無效值。
(2)轉(zhuǎn)向ASP.NET MVC意味著這些問題的處理將落到程序員的肩上—對于某些人來說可能會引起恐慌,而對另一些人來說可能是一件好事。
(3)如果認為框架”就應(yīng)該處理這種事情”的話,那么確實有一種框架可以處理這一類事情,而且處理的很好,它就是asp.net web forms。然而,其代價就是失去了對asp.net web froms引入的抽象層次的一些控制。
(4)ASP.NET MVC提供了對標(biāo)記更多的控制,這意味著程序員要承擔(dān)更多的責(zé)任,要明確的是,ASP.NET MVC提供了許多內(nèi)置的保護機制(例如:默認利用HTML的輔助方法和Razor語法進行HTML編碼以及請求驗證等功能特性)。
2.ASP.NET MVC開發(fā)人員
(1)對于存在安全風(fēng)險的應(yīng)用程序,主要的借口是開發(fā)人員缺乏足夠的信息或者理解,我們想要改變這一局面,但是我們也意識到人無完人,總會有疏忽的時候。鑒于此,請記住下面的錦囊妙計。
1)永遠都不要相信用戶提供的任何數(shù)據(jù)
2)每當(dāng)渲染作為用戶輸入而引入的數(shù)據(jù)時,請對其進行HTML編碼(如果數(shù)據(jù)作為特性值顯示,就應(yīng)對其進行HTML特性編碼)
3)考慮好網(wǎng)站的那些部分允許匿名訪問,那些部分要求認證訪問。
4)不要試圖自己凈化用戶的HTML輸入—否則將遭遇失敗。
5)在不需要通過客戶端腳本訪問cookie時,使用HTTP-only cookie。
6)強烈建議使用AntiXss庫(www.codeplex.com/AntiXSS)。
(2)同時,應(yīng)用程序的構(gòu)建基于這樣一個假設(shè),即只有特定的用戶才能執(zhí)行某些操作,其他用戶則不能執(zhí)行這些操作。