V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rv54ntjwfm3ug8
V2EX  ›  程序员

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

  •  
  •   rv54ntjwfm3ug8 · Apr 9, 2022 · 1370 views
    This topic created in 1478 days ago, the information mentioned may be changed or developed.

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

    2 replies    2022-04-10 22:59:13 +08:00
    leeg810312
        1
    leeg810312  
       Apr 10, 2022 via Android
    建议多参考官方文档,上面有方法说明还有返回对象的属性说明,token 按请求生成,附在 cookie 中一起发回,提交时带上,检查是否和请求匹配。如果是 web API ,本身就得支持跨域,没有 crsf 问题,也就没有必要调用这个方法
    dotw2x
        2
    dotw2x  
       Apr 10, 2022
    如果使用的是 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)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   871 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 22:03 · PVG 06:03 · LAX 15:03 · JFK 18:03
    ♥ Do have faith in what you're doing.