2012-11-06 56 views
1

沒錯。我不太明白。爲什麼ViewState在發佈數據不是時會被加密?

ViewState加密是爲了保護用戶數據隱私而提供的,但是如果例如使用http(不是https)發佈表單數據的方式將ViewState設置爲加密,那麼對於來自http的攔截器messsage身體?

感謝您的澄清。

+1

你從哪裏得到這些信息?你能發佈一個鏈接嗎? – Oded

+0

哪一個?該視圖狀態加密可以設置?在許多地方,如http://msdn.microsoft.com/en-us/library/aa479501.aspx。 如果您詢問的是未經常規http加密的後數據,是不是這樣? 其實,不是在一個http標題,但身體 - 我剛剛糾正。 –

回答

1

ViewState加密的目的是爲了確保數據不被篡改,它不是保護它不被查看。從docs

通過創建散列值,ASP.NET頁面框架可以測試視圖狀態數據是否被篡改。但視圖狀態數據仍然可以被查看,並且可能被惡意用戶攔截和讀取。 ...雖然MAC編碼有助於防止篡改視圖狀態數據,但它不會阻止用戶查看數據。

更新

我最初的評論可能會出現有點誤導 - 你可以通過使用加密保護的ViewState的觀看,但是,這加密實際POST數據(這是我得到的觀點)。

+0

您是否建議ViewState未加密,但僅在其旁邊添加了哈希控制值,以便ASP.NET引擎可以在回發時檢查是否有人篡改了它? 添加哈希校驗和來保護上面描述的HackedByChinese,但在http://msdn.microsoft.com/en-us/library/aa479501.aspx上他們總是談論加密是合乎邏輯的。我對加密而不是哈希校驗和產生懷疑。 –

+0

@Срба引用的文章指出「爲了減少有人攔截存儲在ViewState中的信息的機會」。我同意這是一個誤導性聲明,因爲如果您擔心攔截,您將通過HTTPS加密整個連接。我認爲ViewState加密功能可以更好地用作附加層來防止篡改,而不是攔截。 – pseudocoder

+0

好的,得出結論:當我們說ViewState加密時,我們討論添加一個哈希校驗和字段或類似的東西,以確保篡改,而不是整個數據加密? –

0

由於ViewState用於在無狀態環境中合成狀態,它可以包含頁面內部使用的信息,以跟蹤用戶與頁面交互的頁面狀態。

因此,它可能被用來提取,修改或惡化視圖狀態信息,以影響頁面的工作方式。特別是,它可以防止「單擊攻擊」(其中完整狀態是預先構建的並且一次性發布)。由於A)在HTTP或HTML中沒有真正的機制來實現這一點,所以發佈的數據沒有加密(除了通過傳輸,如果你使用SSL的話),B)它是單次旅行,客戶端始終發送數據。

如果您根本不使用ViewState(對您有好處!),或者確信它不能用於惡意操縱或提取用戶信息,請不要使用它。

0

如果您將敏感數據保持在視圖狀態,則可能需要對其進行加密。默認情況下,視圖狀態不加密,除非頁面上的控件請求加密。

相關問題