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

2022-04-09 22:31:11 +08:00
 rv54ntjwfm3ug8

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

983 次点击
所在节点    程序员
2 条回复
leeg810312
2022-04-10 22:29:36 +08:00
建议多参考官方文档,上面有方法说明还有返回对象的属性说明,token 按请求生成,附在 cookie 中一起发回,提交时带上,检查是否和请求匹配。如果是 web API ,本身就得支持跨域,没有 crsf 问题,也就没有必要调用这个方法
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)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/845954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX