首页 > 解决方案 > JWT - 将刷新令牌保存为 cookie 危险吗?

问题描述

我已经阅读了几天,我有两个问题

1)如果我将访问令牌存储在本地存储中,并将刷新令牌存储在 HttpOnly cookie 中,我是否需要担心 XSRF?如果攻击者作弊以发出请求,则响应由好用户接收。它请求新的访问令牌和刷新令牌还不错,攻击者无法窃取响应的内容。这是真实的 ?

如果攻击是 XSS,它可以进行相同的攻击,就好像它也将访问令牌存储为 HttpOnly cookie 一样......这很糟糕。但是,如果您将刷新令牌存储在本地存储中,那将非常糟糕,您可以更新访问令牌。

使用这种方法,我不应该担心 XSRF,但是如果我将 2 个令牌存储在 HttpOnly cookie 中,我必须担心 XSRF(关于避免 XSRF 的令牌)和 XSS。如果他们成功攻击,他们只能在访问令牌的生命周期内作恶。

2)如果我的授权服务器是一个微服务并且我通过内部IP(10.xxx)访问我必须继续担心XSS而不是XSRF,这是真的吗?

标签: jwtrefresh-tokenx-xsrf-token

解决方案


您是否考虑过将刷新令牌和访问令牌(或 ID 令牌)都保存到安全的 httponly cookie 中?我这样做,效果很好。我还签署了我的 cookie,并对它们进行双重异或。

在您的中间件功能中,您可以检查访问令牌的有效性。如果访问令牌有效,则允许访问该资源。

如果访问令牌已过期,请检查刷新令牌的有效性(因为它可能已过期)。如果它仍然有效,则通过 cookie 发出一个新的访问令牌并允许用户访问该资源。

如果刷新令牌也过期,用户必须重新登录。


推荐阅读