正是这样。我不太明白。
提供 ViewState 加密是为了保护用户数据隐私,但是如果例如使用 http(不是 https)发布的表单数据对于来自 http 消息正文的拦截器来说是清晰可见的,那么设置 ViewState 加密的意义何在?
感谢您的澄清。
正是这样。我不太明白。
提供 ViewState 加密是为了保护用户数据隐私,但是如果例如使用 http(不是 https)发布的表单数据对于来自 http 消息正文的拦截器来说是清晰可见的,那么设置 ViewState 加密的意义何在?
感谢您的澄清。
ViewState 加密的目的是确保数据不被篡改,而不是保护数据不被查看。从文档:
通过创建哈希值,ASP.NET 页面框架可以测试视图状态数据是否被篡改。但是视图状态数据仍然可以查看,并且可能被恶意用户截取和读取。... 虽然 MAC 编码有助于防止篡改查看状态数据,但它不会阻止用户查看数据。
更新
我最初的评论可能看起来有点误导 - 您可以通过使用加密来保护 ViewState 的查看,但是,这不会加密实际POST
数据(这就是我要说的)。
由于 ViewState 用于在无状态环境中合成状态,因此它可以包含页面内部使用的信息,以在用户与其交互时跟踪页面的状态。
因此,它可能被用于提取、修改或畸形视图状态信息以影响页面的工作方式。特别是,它可以防止“一键式攻击”(其中完整状态是预先构建并一次性发布的)。发布数据没有被加密(除了传输,如果你使用 SSL),因为 A)在 HTTP 或 HTML 中并没有真正的机制,B)它是一次单程,客户端无论如何都会产生数据。
如果你根本不使用 ViewState(对你有好处!),或者确信它不能被用来恶意操纵或提取用户信息,那么就不要使用它。
如果您将敏感数据保持在视图状态,您可能希望对其进行加密。默认情况下,视图状态不加密,除非页面上的控件请求加密。