Asp.net MCTS 70-515培训套件,查看状态错误?

Asp.net MCTS 70-515培训套件,查看状态错误?,asp.net,web,Asp.net,Web,在书的第123页-第3章,第2课。它说: " Page.ViewState属性提供了一个字典对象,用于在 对同一页的多个请求。此对象的类型为StateBag。当ASP.NET 处理页时,将页及其控件的当前状态散列为字符串并 在页面中保存为HTML隐藏字段,名为_uviewstate。如果数据对于 单个字段(在Page.MaxPageStateFieldLength属性中指定),ASP.NET执行 查看状态分块,将其拆分为多个隐藏字段。“ 我对uuu ViewState隐藏字段的理解是,它存储了与

在书的第123页-第3章,第2课。它说: " Page.ViewState属性提供了一个字典对象,用于在 对同一页的多个请求。此对象的类型为StateBag。当ASP.NET 处理页时,将页及其控件的当前状态散列为字符串并 在页面中保存为HTML隐藏字段,名为_uviewstate。如果数据对于 单个字段(在Page.MaxPageStateFieldLength属性中指定),ASP.NET执行 查看状态分块,将其拆分为多个隐藏字段。“

我对uuu ViewState隐藏字段的理解是,它存储了与设计时更改的控件的值。更不用说,如果uu ViewState是任意数量数据的散列,它永远不会变得太大,因为散列的大小是固定的


这本书错了吗?或者我在这里遗漏了什么…

视图状态是用base-64编码的

这本书具有误导性,因为散列是单向操作,它将使以后在服务器端对其进行解码变得非常不可能


您的理解也是错误的,viewstate没有存储与设计时值不同的值。基本上,它是在回发之间持久化表单数据。请参考msdn(http://msdn.microsoft.com/en-us/library/bb386448.aspx)详细信息。

我也在用同一本书准备这次考试。这一行似乎与下面文章中的信息相似

处理页面时,页面和控件的当前状态 散列为字符串并作为隐藏字段保存在页面中,或 如果ViewState中存储的数据量 属性超过MaxPageStateFieldLength中的指定值 财产。当页面被发布回服务器时,页面将被解析 页初始化和还原属性时的视图状态字符串 页面中的信息

然而,如果你在MSDN的其他地方挖掘,你会得到以下准确的解释

默认情况下,视图状态数据存储在页面中的隐藏字段中 并使用base64编码进行编码。此外,视图的散列 通过使用机器身份验证从数据创建状态数据 代码(MAC)键。将哈希值添加到编码的视图状态数据中 结果字符串存储在页面中。当页面打开时 返回服务器后,ASP.NET页面框架将重新计算 哈希值,并将其与存储在视图状态中的值进行比较。如果 哈希值不匹配,将引发一个异常,指示 视图状态数据可能无效

通过创建散列值,ASP.NET页面框架可以测试 视图状态数据已损坏或被篡改。然而,即使 如果它没有被篡改,视图状态数据仍然可以被截获 并被恶意用户读取

所以,来回答你的问题

  • 哈希已完成,但仅用于有效性目的。那一段确实令人误解
  • 关于_ViewState,Dooh提供了上述链接