将 jwt 访问令牌存储在 httpOnly cookie 中是否安全?

Dim*_*lin 1 security authentication authorization jwt

我观看了一个指南,其中作者将访问令牌存储在 localStorage 中,然后他将访问令牌作为授权标头,并通过 axios 拦截器在每个请求中使用值“Bearer accessToken”。但我想知道为什么不像我们使用刷新令牌那样将访问令牌存储在 httpOnly cookie 中。如果有的话会出现什么问题?

Mic*_*ski 5

将访问令牌存储在仅 HTTP、安全的同站点 cookie 中会更安全(如果它是 JWT 访问令牌并不重要)。它更安全,因为访问令牌的值无法通过跨站点脚本 (XSS) 攻击被窃取。但是,当您将访问令牌保存在 cookie 中时,您将无法将其发送到标头中的 API Authorization。浏览器无法设置授权标头,它仅附加 cookie。这意味着您可能需要一个位于前端和 API 之间的软件,并从 cookie 中提取访问令牌(这可以通过 API 网关等来完成)。

另请记住,在 cookie 中存储访问令牌会让您容易遭受跨站点请求伪造攻击 (CSRF),但有一些成熟的技术可以保护您免受 CSRF 的侵害。防范 CSRF 也比防范 XSS 更简单。