2010-04-14 60 views

回答

10

當然。 ViewState只是base64編碼(除非你指定它應該被加密)。這裏有一個寫給ViewState viewer的人的鏈接。這是另一個Fritz Onion。您可能無法直接修改ViewState(即代碼之外),因爲ASP.NET已進行檢查以確保沒有任何內容被篡改爲ViewState。有關更多信息,請參閱EnableViewStateMAC設置。

更新

由於腐爛的鏈接,鏈接到不同的觀衆都不再有效。但是,一個簡單的「查看狀態查看器」搜索可以找到互聯網上的其他人,如ASP.NET ViewState viewer

+5

同意,但問題是否可以解密。假設Abe知道他在說什麼,他不是在談論base64 _encoding_,而是關於_encrypted_ viewstate,然後使用base64對其進行編碼。問題是你不能解密它(這就是整個問題),不,你不能改變它,即使你可以,MAC(消息認證碼)將失敗,服務器將拒絕 – Henri 2010-04-15 21:55:26

+1

@亨利 - 我相信安倍正在談論他自己的網站,而不是別人的網站。如果它是你自己的站點,並且你在'machineKey'元素中指定了'decryptionKey'屬性,那麼你可以使用相同的方法來解密ViewState,就像用於加密它(無論是在加密之前還是之後進行base64編碼)不知道),因爲你知道鑰匙。如果你沒有指定'decryptionKey',那麼它是自動生成的,我懷疑是否有辦法獲得該密鑰。如果禁用'enableViewStateMAC'(當然,你永遠不應該這樣做),你可以在代碼外改變'ViewState'。 – Thomas 2010-04-15 23:15:52

+1

謝謝亨利,這就是我的意思。如果你想發佈這個答案,我會接受它。 – 2010-04-19 15:00:55

1

請看看進到這裏How to decode viewstate我已經提供了完整的源代碼,從視圖狀態字符串獲取StateBag的。加密狀態也可以使用相同的方法解密,但分配密鑰。

相關問題