【问题标题】:Anti forgery tokens are reusable even after one request即使在一次请求之后,防伪令牌也可以重复使用
【发布时间】:2018-08-15 13:44:24
【问题描述】:

我正在开发 asp.net mvc 应用程序。 在这里,我添加了@Html.AntiForgeryToken(),在控制器中我添加了属性[ValidateAntiForgeryToken]。现在我的意思是,当我发送删除任何文档的请求时,就会创建一个防伪令牌。我已经复制了那个令牌。 我再次删除其他文档并用以前使用的令牌替换系统生成的令牌。我的请求仍然是成功删除文档。
我将上述所有操作与 Burp Suite 一起使用。 请清除防伪令牌的生命周期。 当我们已经使用了一个防伪令牌时,该令牌应该在使用后过期吗? 谢谢 凯坦伴侣

【问题讨论】:

    标签: asp.net-mvc security csrf-protection antiforgerytoken


    【解决方案1】:

    这不是防伪令牌的工作原理,AF 令牌用于防止 CSRF 攻击意味着它不会允许不受信任的服务器发布表单

    当您实现 @html.AntiforgeryToken() 时,这一行会创建一个隐藏字段和一个 cookie,这意味着当您发布表单时会比较两者,如果有任何一个丢失或不匹配,这意味着它不会发布,并且由于您的 cookie 防伪令牌与之前的防伪令牌匹配,它将在您的情况下发布,这就是它应该如何工作,因此不用担心

    【讨论】:

    【解决方案2】:

    Anti-ForgeryToken 在表单中创建一些加密值,并将相同的值存储在 cookie RequestVerificationToken 中。当您提交表单时,两者都会提交给服务器。

    RequestVerficationToken cookie 的过期值设置为 Session。因此当用户在会话超时(默认为 20 分钟)离开浏览器时它会过期。因此,在您的情况下,您可以在同一页面上的多个请求中使用相同的令牌,直到会话过期。

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 2013-09-06
      • 2011-05-17
      • 2014-08-26
      • 2013-11-16
      • 2023-04-09
      • 1970-01-01
      • 2018-06-19
      • 2011-11-07
      相关资源
      最近更新 更多