gpt4 book ai didi

asp.net-mvc-3 - ASP.NET MVC3 的 AntiForgeryToken 的实现细节和原理是什么?

转载 作者:行者123 更新时间:2023-12-04 21:50:53 27 4
gpt4 key购买 nike

AntiForgeryToken 用于防止 CSRF 攻击,但是 MSDN 上的链接并没有让我深入了解 AntiForgeryToken 究竟做了什么,或者它是如何工作的,或者为什么事情按照它们的方式完成。

从我收集的信息来看,它会在网页和 cookie 中创建一个哈希值。它们中的一个或两个使用散列 IPrincipal.Name ,并使用对称加密。

任何人都可以阐明:

  • AntiForgeryToken 如何在内部工作
  • 应该用什么来保护
  • 什么不应该用来保护
  • 上面#1 的实现选择背后的原因是什么?
  • 例子:
  • 是安全的“DoubleSubmit”cookies 和其他常见漏洞的实现
  • 如果用户打开多个选项卡,是否存在实现问题
  • 是什么让 MSFT 的实现与 SANS 提供的实现不同
  • 最佳答案

    好的,这是我最好的镜头。

    1) 在内部,mvc 使用 RNG 加密方法创建一个 128 位字符串作为 XSRF token 。该字符串存储在 cookie 以及表单某处的隐藏字段中。 cookie 名称似乎采用 __RequestVerificationToken + 应用程序路径(服务器端)的 base 64 编码版本的形式。这个的html部分使用AntiForgeryDataSerializer来序列化以下几条数据
    - 盐
    - 值( token 字符串)
    - 创建日期的刻度
    - 用户名(看起来像 Context.User)

    validate 方法基本上反序列化 cookie 和表单中的值,并根据值(salt/value/ticks/username)比较它们。

    2/3) 我认为这个讨论更多是关于何时使用 XSRF token 以及何时不使用。在我看来,您应该在每种形式上都使用它(我的意思是为什么不这样做)。我能想到的唯一一件事是,这不能保护您是否真的点击了有问题的表格。知道应用程序名称的 base64 编码将使攻击者能够在 XSRF 攻击期间查看 cookie。也许我对此的解释是不正确的。

    4) 不确定您要在这里寻找什么?我想我会建立一种机制,我会尝试在 session 中存储 XSRF token (如果一个已经可用),如果没有,则尝试使用 cookie 方法。至于使用的加密类型,我发现了这个 SO artcile。
    Pros and cons of RNGCryptoServiceProvider

    关于asp.net-mvc-3 - ASP.NET MVC3 的 AntiForgeryToken 的实现细节和原理是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4915430/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com