我可以在html源代码中看到ViewStateUserKey吗?

时间:2014-01-22 16:19:21

标签: asp.net antiforgerytoken

在使用4.0框架的asp.net webforms应用程序中,我们将ViewStateUserKey设置为一个唯一值,以阻止跨站点请求伪造漏洞。

我们最近未通过漏洞测试,因为测试人员说他无法“观察”html源代码中存在的漏洞。我希望我可以简单地解码ViewState并查看ViewStateUserKey,但是,当我解码视图状态(使用Fiddler2 ViewState检查器或其中一个在线解码器网站,如http://ignatu.co.uk/ViewStateDecoder.aspx)时,我看不到ViewStateUserKey。我可以在viewstate中看到值,混合了一堆乱码,但ViewStateUserKey本身似乎是用乱码编码的。

例如,这里是解码的视图状态(使用Fiddler2 ViewState检查器),一个页面有一个DropDownList控件,有4个值(Text1,Text2,Text3,Text4),你可以看到与乱码混合的值:

�-1665646599dfddddfText11gText22gText33gText44gddd?"H~E* =91��;��O!��;�O�B�g

这是同一页面,ViewStateUserKey设置为静态值“cat”(我知道设置为静态值时ViewStateUserKey没用)。

�-1665646599dfddddfText11gText22gText33gText44gddd�Gpb����c��uy�l����F3��>�h�~

观点结束时的胡言乱语发生了变化;似乎ViewStateUserKey隐藏在乱码中。但有没有办法向漏洞测试人员证明这一点?

注意,如果我将enableViewStateMAC设置为“false”(这当然是生产中永远不会做的),我会得到不同的乱码,但我仍然无法在html源代码中看到ViewStateUserKey。

2 个答案:

答案 0 :(得分:3)

ViewStateUserKey 值通常不包含在有效负载本身的一部分中。相反,它是一种特殊的修饰符,在计算加密MAC(有效载荷末尾的乱码)时与有效载荷混合在一起。但由于MAC功能不可逆,因此无法根据MAC推断其ViewStateUserKey是什么。

答案 1 :(得分:0)

不,因为ViewStateUserKey存储在cookie中,并在提交时使用表单中的密钥进行验证。