2011-04-20 72 views
0

我搜索很多网站,但没有得到任何解决方案,如何以编程方式检测ViewState。如何检测ViewState篡改或不编程

我从站点得到一个建议,他们说在@Page指令中EnableViewStateMac为true,其他设置如VaidationKey和ValidationAlgorithm也要定义。但他们没有说如何做像VaidationKey和ValidationAlgorithm这样的设置。任何人都可以让我走向正确的方向。谢谢

+0

你说的这里检测的ViewState是什么意思? – 2011-04-20 09:35:23

回答

2

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; 
} 
+0

你可以告诉我如何ViewStateUserKey用户。我是否需要在代码中指定?我想看看ViewStateUserKey的实际使用情况。感谢 – Thomas 2011-04-20 10:10:13

+0

我更新了我的答案,请使用CodePlex的AntiCSRF项目。这更安全。 – Steven 2011-04-20 10:35:13