V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rv54ntjwfm3ug8
V2EX  ›  程序员

ASP.NET Core 通过 antiForgery.GetAndStoreTokens 生成的 CSRF Token 会被存储在服务器上吗?还是随机生成,仅校验是否和请求头相同?对所有 API 请求 verify 并 rotate

  •  
  •   rv54ntjwfm3ug8 · 2022-04-09 22:31:11 +08:00 · 971 次点击
    这是一个创建于 951 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ASP.NET Core 通过 antiForgery.GetAndStoreTokens 生成的 CSRF Token 会被存储下来吗?还是随机生成,仅校验是否和请求头相同?对所有 API 请求 verify 并 rotate CSRF Token 对性能影响多大?

    2 条回复    2022-04-10 22:59:13 +08:00
    leeg810312
        1
    leeg810312  
       2022-04-10 22:29:36 +08:00 via Android
    建议多参考官方文档,上面有方法说明还有返回对象的属性说明,token 按请求生成,附在 cookie 中一起发回,提交时带上,检查是否和请求匹配。如果是 web API ,本身就得支持跨域,没有 crsf 问题,也就没有必要调用这个方法
    dotw2x
        2
    dotw2x  
       2022-04-10 22:59:13 +08:00
    如果使用的是 cookieToken 不会存储,会响应到 cookie 里。新版应该默认用了 core 的数据保护机制来生成 cookie,每次都会不一样。然后服务器收到 cookie 后进行解密构造 AntiforgeryToken 进行 token 信息比对,不一致则拒绝。
    对于性能见仁见智了,从我们自己站点日常使用上暂时没遇到性能问题。
    如果担心性能或不满足于现在的校验机制,你可以自己实现 AntiForgeryToken 机制,ABP 也是这么干的。
    asp.net core 框架源码中关键内容参考这里:
    [aspnetcore/src/Antiforgery/src/Internal/DefaultAntiforgery.cs]( https://github.com/dotnet/aspnetcore/blob/c85baf8db0c72ae8e68643029d514b2e737c9fae/src/Antiforgery/src/Internal/DefaultAntiforgery.cs)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1120 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:31 · PVG 07:31 · LAX 15:31 · JFK 18:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.