※ 將以上 machineKey 加入到 Web.config 的 <system.web>...</system.web> 區段中
在ASP.NET中,MachineKey被廣泛應用於ViewState加密、Forms Authentication及Membership Cookie加密、Out-of-Process Session資料加密、Membership密碼雜湊(或加密)... 等運算。由於預設為自動產生,大部分的人(甚至開發者)不曾感受過它的存在,但它卻一直默默扮演捍衛ASP.NET安全的重要角色。比較有機會察覺到MachineKey的場合,多半出現在多台伺服器組成Web Farm的架構中,此時需手動將各伺服器的MachineKey設成一致,以避免ViewState MAC驗證失敗問題。
以上的概念我在剛學ASP.NET時就確立了,最近在處理主機ViewState MAC驗證相關問題時,倒產生了一些新的疑問:
秉持追根究底的精神,研讀過相關文件,甚至追蹤了部分ASP.NET核心程式,理出一點頭緒:
...
原文:http://blog.darkthread.net/post-2011-11-20-inside-aspnet-autogenkeys.aspx
machineKey 項目 (ASP.NET 設定結構描述) 設定金鑰,用以進行表單驗證 Cookie 資料及檢視狀態資料的加密和解密,並驗證跨處理序 (Out-Of-Process) 工作階段的狀態識別。
ASP.NET MachineKey自動產生原理剖析 在ASP.NET中,MachineKey被廣泛應用於ViewState加密、Forms Authentication及Membership Cookie加密、Out-of-Process Session資料加密、Membership密碼雜湊(或加密)... 等運算。由於預設為自動產生,大部分的人(甚至開發者)不曾感受過它的存在,但它卻一直默默扮演捍衛ASP.NET安全的重要角色。比較有機會察覺到MachineKey的場合,多半出現在多台伺服器組成Web Farm的架構中,此時需手動將各伺服器的MachineKey設成一致,以避免ViewState MAC驗證失敗問題。
當 ASP.NET 發生 Viewstate MAC 的驗證失敗 ( machineKey ) 問題是這樣的,當 ASP.NET 因為網頁還沒全部下載完成時,使用者就按下網頁中的任意一個 PostBack 的按鈕或連結時,就會發生「Viewstate MAC 的驗證失敗」的錯誤訊息!
將 JS 進行 壓縮、優化、縮減,並且保持 JS 正常顯示,直接在網頁進行操作,不用下載軟體。
利用線上工具將字串轉換為 Url Encode 或 Url Decode,方便Url字串處理,不需要再另外寫程式處理。
將 Html 進行 壓縮、優化、縮減,並且保持 Html 正常顯示,直接在網頁進行操作,不用下載軟體。
顯示瀏覽器的 HTTP Request Headers 資訊,常見的包含:Accept、Accept-Encoding、Accept-Language、Connection、Cookie、Host、Referer、User-Agent...
將 CSS 進行 壓縮、優化、縮減,並且保持 CSS 正常顯示,直接在網頁進行操作,不用下載軟體。