ASP反请求伪造,为什么黑客不会先获取?

Rob*_*Rob 5 asp.net asp.net-mvc csrf owasp

我一直在我的MVC3 Web应用程序中实现ASP ARF令牌,并阅读CSRF漏洞利用的工作方式以及ARF令牌如何防御它.现在我想知道'黑客'是否无法通过额外的步骤绕过ARF检查.正常的CSRF场景如下:

  1. 创建一个发布到目标网站BankingSite的网站(我们称之为HackerSite)
  2. 使用社交工程(或广告中的XSS等),以便用户访问网站HackerSite
  3. HackerSite上的脚本将使用用户cookie /凭证发布到BankingSite,从而以他/她的名义发布

由于我们的ARF令牌,BankingSite知道忽略来自网站HackerSite的POST.因为它缺少正确的AFR令牌.谁能告诉我为什么黑客不能通过首先在BankingSite上执行GET请求来获取令牌?像这样:

  1. 创建一个发布到目标网站BankingSite的网站(我们称之为HackerSite)
  2. 使用社交工程(或广告中的XSS等),以便用户访问网站HackerSite
  3. HackerSite上的脚本将执行GET请求并从响应中的HTML中获取ARF令牌,此请求还将在用户的cookie中设置ARF令牌
  4. HackerSite上的第二个脚本将使用抓取的ARF令牌 +用户cookie /凭证发布到BankingSite ,从而以他/她的名字发布

有谁知道我在这里缺少什么,以及ARF如何抵御这种攻击?

dev*_*art 1

攻击者不知道受害者的cookie。基于它生成令牌。如果您的网站存在其他 XSS 漏洞,则此方法无法帮助解决 CSRF 漏洞。

如果您发送 AJAX 引用头,则将是 HackerSite,而不是 BankSite。因此您无法访问网站的封闭部分(无法访问 CSRF 令牌)。它是 Http-Only,所以你不能只通过 javascript 来获取它。当您想向受害者站点发送获取请求时,您的计划将部分失败。

  • 当执行请求时(正常或通过 AJAX),所有 cookie 都会自动传递,无论是否为 HttpOnly。 (2认同)