【问题标题】:How to detect ViewState is tamper or not programatically如何以编程方式检测 ViewState 是否已调和
【发布时间】:2011-04-20 09:21:42
【问题描述】:

我搜索了许多站点,但没有找到任何解决方案以编程方式检测 ViewState。

我从一个站点得到一个建议,他们说在 @Page 指令中 EnableViewStateMac 为 true,并且还必须定义其他设置,例如 VaidationKey 和 ValidationAlgorithm。但他们没有说如何进行 VaidationKey 和 ValidationAlgorithm 等设置。谁能把我推向正确的方向。谢谢

【问题讨论】:

  • 这里检测ViewState是什么意思?

标签: asp.net viewstate


【解决方案1】:

EnableViewStateMac 属性在 ASP.NET 中默认为 true。当它是true 时,它会阻止任何人更改视图状态(当 ASP.NET 检测到更改时将引发异常)。

它不能阻止的是重放和跨站点请求伪造攻击。默认情况下,视图状态锁定给单个用户,这允许黑客复制视图状态并将其重新发送到另一个用户的上下文中。这就是 ViewStateUserKey 的用武之地。您可以使用登录用户的 ID 进行设置,这将防止 ViewState 在另一个用户的上下文中被重用。

您可以阅读更多关于它的信息here,并且有一个专门针对preventing CSRF attacks 的 CodePlex 项目。不要自己动手,使用那个库!

更新

这里是一个如何使用ViewStateUserKey的例子:

void Page_Init(object sender, EventArgs e)
{
    this.ViewStateUserKey = this.Session.SessionID;
}

【讨论】:

  • 你能告诉我如何查看用户的 ViewStateUserKey。我需要在代码中指定吗?我想看看 ViewStateUserKey.thanks 的实际使用
  • 我更新了我的答案,请使用 CodePlex 的 AntiCSRF 项目。这样更安全。
猜你喜欢
  • 1970-01-01
  • 2011-05-14
  • 2015-02-18
  • 2014-08-24
  • 2018-01-09
  • 2013-11-20
  • 2013-04-21
  • 1970-01-01
  • 2021-05-27
相关资源
最近更新 更多