为什么在发布数据时不应加密ViewState?

时间:2012-11-06 16:03:53

标签: asp.net

正是如此。我完全不明白。

提供ViewState加密是为了保护用户数据隐私,但是如果使用http(而不是https)发布的表单数据对于来自http消息的拦截器清晰可见,则设置ViewState加密的重点是什么?体?

感谢您澄清。

3 个答案:

答案 0 :(得分:1)

ViewState加密的目的是确保数据不被<篡改,而不是保护它不被查看。来自docs

  

通过创建哈希值,ASP.NET页面框架可以测试视图状态数据是否已被篡改。但仍然可以查看状态数据,并且可能被恶意用户拦截和读取。   ...虽然MAC编码有助于防止篡改视图状态数据,但它不会阻止用户查看数据。

<强>更新

我的初始评论可能会显得有些误导 - 您可以使用加密来保护对ViewState的查看,但是,加密实际的POST数据(这是我得到的点)。

答案 1 :(得分:0)

由于ViewState用于在无状态环境中合成有状态,因此它可以包含页面内部使用的信息,以便在用户与其交互时跟踪页面的状态。

因此,它可能会用于提取,修改或处理视图状态信息以影响页面的工作方式。特别是,它可以防止“一键攻击”(完整状态是预先建立并一次性发布)。发布数据未加密(除了通过传输,如果您使用SSL),因为A)在HTTP或HTML中实际上没有这种机制,而且B)它是一次旅行,客户端始终发送数据。

如果您根本不使用ViewState(对您有用!),或者确信它不能用于恶意操纵或提取用户信息,请不要使用它。

答案 2 :(得分:0)

如果您将敏感数据保持在视图状态,则可能需要对其进行加密。默认情况下,除非页面上的控件请求加密,否则视图状态不会加密。