jwt - JWT - 将刷新令牌保存为 cookie 危险吗?
问题描述
我已经阅读了几天,我有两个问题
1)如果我将访问令牌存储在本地存储中,并将刷新令牌存储在 HttpOnly cookie 中,我是否需要担心 XSRF?如果攻击者作弊以发出请求,则响应由好用户接收。它请求新的访问令牌和刷新令牌还不错,攻击者无法窃取响应的内容。这是真实的 ?
如果攻击是 XSS,它可以进行相同的攻击,就好像它也将访问令牌存储为 HttpOnly cookie 一样......这很糟糕。但是,如果您将刷新令牌存储在本地存储中,那将非常糟糕,您可以更新访问令牌。
使用这种方法,我不应该担心 XSRF,但是如果我将 2 个令牌存储在 HttpOnly cookie 中,我必须担心 XSRF(关于避免 XSRF 的令牌)和 XSS。如果他们成功攻击,他们只能在访问令牌的生命周期内作恶。
2)如果我的授权服务器是一个微服务并且我通过内部IP(10.xxx)访问我必须继续担心XSS而不是XSRF,这是真的吗?
解决方案
您是否考虑过将刷新令牌和访问令牌(或 ID 令牌)都保存到安全的 httponly cookie 中?我这样做,效果很好。我还签署了我的 cookie,并对它们进行双重异或。
在您的中间件功能中,您可以检查访问令牌的有效性。如果访问令牌有效,则允许访问该资源。
如果访问令牌已过期,请检查刷新令牌的有效性(因为它可能已过期)。如果它仍然有效,则通过 cookie 发出一个新的访问令牌并允许用户访问该资源。
如果刷新令牌也过期,用户必须重新登录。
推荐阅读
- java - 为什么 java 中的 Arrays.sort() 方法不使用计数排序技术?
- javascript - 一次通话两种不同的内容类型
- google-apps-script - 如何将谷歌文档转换为干净的 HTML
- apache-kafka - 如何自动调用 kafka-stream-processor 中的 process() 方法?
- java - 由动画关键帧引起的除零异常 (LIBGDX)
- angular - 数组更改时刷新 ng2-smart-table
- python - 将多个值添加到列中 - Pandas
- ios - 从我的本机应用程序将 cookie 传递给 SFSafariViewController
- html - Dreamweaver 不加载缓存克星 css
- python - Python将var初始化为None?