【发布时间】:2018-10-16 03:15:49
【问题描述】:
我正在为前端 Reactjs 和后端 SpringBoot(REST) 创建一个应用程序。
我想使用 JWT 令牌来保证安全。由于窃取 JWT 刷新令牌可能暗示的安全问题,我想问您以下场景是否有效:
-
后端
- 登录时创建访问-JWT 和刷新-JWT
- 在两个有效负载部分设置相同的唯一 UUID(因此我在它们之间创建了一个“链接”)。
- 将 refresh-JWT 的 hashCode 保存在 DB 中(以备将来有效性检查)
- 在正文访问-JWT 和 cookie 刷新-JWT 中作为响应返回。
-
前端
- 将访问-JWT 存储在本地存储中
- 将 refresh-JWT 存储为 cookie
现在,对于来自前端的每个请求,我都会查看两个令牌(标头中的访问 JWT 和作为 cookie 的刷新 JWT)。我检查它们是否具有相同的唯一 UUID。如果他们这样做,我将为他们继续验证过程。
这样做我希望消除 XSS 和 CSRF 攻击,前提是这些攻击不会同时进行。因此,如果 access-JWT 被盗,攻击者将没有 refresh-JWT,反之亦然。
请分享您的想法。谢谢。
【问题讨论】:
标签: security jwt token refresh