在什么情况下,在请求中拥有视图状态可以防止CSRF攻击?This exploit声称,即使请求中存在视图状态,它仍然容易受到CSRF的攻击。然而,利用漏洞并不能解释为什么会出现这种情况。
发布于 2012-07-23 04:43:20
视图状态是一种跨回发保持视图状态(即控件的属性值)的方法。如果攻击者可以猜测或伪造此状态,则攻击者也能够伪造可信的跨站点请求。
在mentioned case中,似乎攻击实际上需要一个跨站点脚本漏洞来利用CSRF:
通过XSS和CSRF的组合,通过将snmpd.conf文件配置为指向攻击者控制的JavaScript文件,可以将用户添加到web应用程序:
系统联系人
因此,在目标源中执行利用漏洞代码后,这种请求伪造攻击就不再是“跨站点”攻击了。
除此之外,由于视图状态在某些情况下是可预测的,因此不能防止CSRF攻击,供应商在视图状态机制中添加了一些不可预测的信息。在ASP.NET中,这被称为 property,它基本上是每个用户的私钥,用于为视图状态的MAC计算加盐。
但正如漏洞描述所说,他们似乎已经在使用这样的保护措施:
…尽管NPM使用了VIEWSTATE保护,但它也容易受到CSRF的攻击。
因此,这再一次是一个跨站点脚本漏洞,而不是一个跨站点请求伪造漏洞。因为如果您已经能够在站点内执行JavaScript代码,那么您就已经完全控制了站点。
https://stackoverflow.com/questions/11603202
复制相似问题