我不应该将访问令牌和刷新令牌都保存到cookie中吗?

问题描述 投票:0回答:1

我正在使用 React 和 Nestjs 在我的 Web 应用程序服务器中实现授权令牌逻辑。

我知道在 cookie 中存储令牌是客户端存储中最安全的。(例如 localStorage)。所以我将刷新令牌存储在 cookie 中。

但是当涉及到访问令牌时。避免使用 cookie 更好吗?

我听说在 cookie 中存储两个令牌(访问刷新)有遭受 CSRF 攻击的风险。 并且可能有一些设备不支持cookie。

另一件事是我需要在子域之间共享令牌(我知道这可以使用 cookie)。如果我想要这个,我可以只共享刷新令牌吗?

总结一下 1.将访问刷新存储到cookie中 2.将刷新存储在cookie中并在其他地方(可能是本地存储)中进行访问。

哪个更好?

第二种方法也适用于子域环境吗?

谢谢!

reactjs node.js authentication cookies oauth-2.0
1个回答
0
投票

选项 1-(将两者都存储在 cookie 中)如果您使用强大的 CSRF 保护机制(例如,CSRF 令牌或 SameSite cookie 属性),则可以工作。如果这样做,这可以简化跨子域的令牌共享,但请记住保持访问令牌短暂。

此方法简化了跨子域的令牌共享,因为 cookie 会自动处理此问题,但您需要确保访问令牌的生命周期较短,以限制在泄露时的暴露。

选项 2-(刷新 cookie 中的令牌,localStorage 中的访问令牌)提供更好的 CSRF 保护,但引入了一些 XSS 风险。它可以在子域环境中工作,但访问令牌不会在子域之间自动共享。您必须依靠刷新令牌来根据每个子域的需要请求新的访问令牌。

跨子域共享令牌需要额外的逻辑来根据每个域的需要刷新访问令牌,从而增加了复杂性。

考虑到您在子域之间共享的要求,具有 CSRF 保护的选项 1 对于您的用例来说可能更简单。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.