首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MCTS 70-515培训套件,视图状态错误?

MCTS 70-515培训套件,视图状态错误?
EN

Stack Overflow用户
提问于 2011-10-01 16:47:19
回答 2查看 433关注 0票数 2

在该书的第123页-第三章,第二课。它说:“Page.ViewState属性提供了一个字典对象,用于在同一页面的多个请求之间保留值。该对象的类型为StateBag。当处理ASP.NET页面时,页面及其控件的当前状态将被散列为一个字符串,并作为名为__ViewState的HTML隐藏字段保存在页面中。如果数据对于单个字段(如Page.MaxPageStateFieldLength属性中所指定的)太长,ASP.NET将执行视图状态分块以将其拆分到多个隐藏字段中。”

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

这本书是错的吗?还是我错过了什么..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-01 22:26:49

Viewstate使用base-64编码。

Book是误导性的,因为散列是单向操作,它会使稍后在服务器端解码它变得非常不可能。

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

票数 2
EN

Stack Overflow用户

发布于 2012-01-30 13:26:08

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

http://msdn.microsoft.com/en-us/library/ie/75x4ha6s.aspx

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

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

http://msdn.microsoft.com/en-us/library/ie/bb386448.aspx

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

通过创建哈希值,ASP.NET页框架可以测试视图状态数据是否已损坏或被篡改。但是,即使视图状态数据未被篡改,恶意用户仍然可以截获和读取这些数据。

所以,来回答你的问题。

  • 散列已完成,但仅用于有效性目的。这段话肯定是misleading.
  • Regarding __ViewState,Dooh提供了上面

的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7619199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档