asp.net - ASP反请求伪造,黑客为什么不先搞个get?

标签 asp.net asp.net-mvc csrf owasp

我一直在我的 MVC3 Web 应用程序中实现 ASP ARF token ,并阅读了 CSRF 漏洞利用的工作原理以及 ARF token 如何防御它。现在我想知道“黑客”是否无法通过使用额外的步骤来绕过 ARF 检查。正常的CSRF场景是这样的:

  • 创建一个发布到目标网站 BankingSite
  • 的站点(我们称之为 HackerSite)。
  • 使用社会工程(或广告中的 XSS 等),以便用户
    访问网站 HackerSite
  • HackerSite 上的脚本将使用用户发布到 BankingSite
    因此以他/她的名义发布的 cookie/凭据

  • 由于我们的 ARF token ,BankingSite 知道忽略来自站点 HackerSite 的 POST。因为它缺少正确的 AFR token 。谁能告诉我为什么黑客不能通过首先在 BankingSite 上执行 GET 请求来获取 token ?像这样:
  • 创建一个发布到目标网站 BankingSite
  • 的站点(我们称之为 HackerSite)。
  • 使用社会工程(或广告中的 XSS 等),以便用户
    访问网站 HackerSite
  • HackerSite 上的脚本将执行 GET 请求并获取 ARF token
    从响应中的 HTML 来看,此请求还将在用户的 cookie 中设置 ARF token
  • HackerSite 上的第二个脚本将发布到 BankingSite 使用
    抓取的 ARF 代币
    + 用户 cookie/凭证因此
    以他/她的名义发帖

  • 有谁知道我在这里遗漏了什么,以及 ARF 是如何防止这种攻击的?

    最佳答案

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

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

    关于asp.net - ASP反请求伪造,黑客为什么不先搞个get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013280/

    相关文章:

    asp.net-mvc - 使用 msbuild 检查编译时 mvc View

    Node.js 有条件地使用 csurf 和 express 4

    javascript - 在我的网络应用程序中禁用 CSRF 或更安全的方法

    c# - RNGCryptoServiceProvider - 随机数审查

    asp.net - 从具有多个 ADFS 的外部应用程序登录的 Asp.Net 应用程序的 SSO 最佳方法

    asp.net - 使用资源文件本地化

    security - 当前端/后端位于两个不同的域时,CSRF 保护如何为我提供比 CORS 控制更高的安全性?

    c# - ASP.NET DropDownList 错误 -- SelectedItem/Value 从不更新

    jquery - 将数组参数从 jquery 传递到 ASP.NET MVC

    javascript - 在 JavaScript 中使用 Razor 语法