我搜索很多网站,但没有得到任何解决方案,如何以编程方式检测ViewState。如何检测ViewState篡改或不编程
我从站点得到一个建议,他们说在@Page指令中EnableViewStateMac为true,其他设置如VaidationKey和ValidationAlgorithm也要定义。但他们没有说如何做像VaidationKey和ValidationAlgorithm这样的设置。任何人都可以让我走向正确的方向。谢谢
我搜索很多网站,但没有得到任何解决方案,如何以编程方式检测ViewState。如何检测ViewState篡改或不编程
我从站点得到一个建议,他们说在@Page指令中EnableViewStateMac为true,其他设置如VaidationKey和ValidationAlgorithm也要定义。但他们没有说如何做像VaidationKey和ValidationAlgorithm这样的设置。任何人都可以让我走向正确的方向。谢谢
EnableViewStateMac
属性是默认在ASP.NET中的true
。当它为true
时,它可以防止任何人更改视图状态(ASP.NET检测到更改时将引发异常)。
它不会阻止的是重放和跨站请求伪造攻击。视图状态默认为而不是锁定到单个用户,这允许黑客复制视图状态并在另一个用户的上下文中重新发送它。这是ViewStateUserKey
进来的地方。您可以使用登录用户的ID进行设置,这将防止ViewState在另一个用户的上下文中重用。
您可以阅读更多关于here的信息,并且有一个专门用于preventing CSRF attacks的CodePlex项目。不要推出自己的,使用该库!
UPDATE
下面是如何使用一个例子ViewStateUserKey
:
void Page_Init(object sender, EventArgs e)
{
this.ViewStateUserKey = this.Session.SessionID;
}
你说的这里检测的ViewState是什么意思? – 2011-04-20 09:35:23