<%@Page EnableViewStateMAC=true %>
可以在頁面級別上設置 EnableViewStateMAC,也可以在應用程序級別上設置。在回傳時,ASP.NET 將為 ViewState 數據生成一個散列代碼,并將其與存儲在回傳值中的散列代碼進行比較。如果兩處的散列代碼不匹配,該 ViewState 數據將被丟棄,同時控件將恢復為原來的設置。
默認情況下,ASP.NET 使用 SHA1 算法來生成 ViewState 散列代碼。此外,也可以通過在 machine.config 文件中設置
十、加密
可以使用加密來保護 ViewState 字段中的實際數據值。首先,必須如上所述設置 EnableViewStatMAC="true"。然后,將 machineKey validation 類型設置為 3DES。這將指示 ASP.NET 使用 Triple DES 對稱加密算法來加密 ViewState 值。
十一、Web 領域中的 ViewState 安全性
默認情況下,ASP.NET 將創建一個隨機的驗證密鑰,并存儲在每個服務器的本地安全授權 (LSA) 中。要驗證在另一臺服務器上創建的 ViewState 字段,兩臺服務器的 validationKey 必須設置為相同的值。如果要通過上述方式之一,對運行于 Web 領域配置中的應用程序進行 ViewState 安全設置,則需要為所有服務器提供一個唯一的、共享的驗證密鑰。
驗證密鑰是一個包含 20 到 64 位密碼增強字節的隨機字符串,用 40 到 128 個十六進制字符表示。密鑰越長越安全,因此建議使用 128 個字符的密鑰(如果計算機支持)。
十二、總結
ASP.NET ViewState 是一種新的狀態服務,可供開發人員基于每個用戶來跟蹤 UI 狀態。ViewState 沒有什么神秘之處,它只是利用了一個老的 Web 編程技巧:在一個隱藏的窗體字段中來回傳遞狀態,并將它直接應用于頁面處理框架中。但效果卻非常好 - 在基于 Web 的窗體中只需編寫并維護很少的代碼。
用戶可能并不總是需要它,但我想您在需要它的時候會發現,ViewState 是提供給頁面開發人員的諸多 ASP.NET 新功能中非常令人滿意的一種功能。
文章來源于領測軟件測試網 http://www.kjueaiud.com/