【问题标题】:How is JWT stored on client side? [duplicate]JWT 如何存储在客户端? [复制]
【发布时间】:2021-09-24 00:59:57
【问题描述】:

我是 JWT 的新手,我只是将它作为 JSON 中的 java 对象返回并制作了一些过滤器,因此它可以像使用 Spring Security 的 session_id 一样工作。

但是我不明白JWT是如何存储在客户端的,服务器响应后它去哪里了? 它是否会被所有浏览器自动存储在 cookie 中? 是否所有浏览器都支持 JWT?

非常感谢您的回答。

【问题讨论】:

  • 本地存储是一种选择。
  • JWT 与浏览器支持无关,它只是服务器响应中返回的字符串。您可以将其保存在内存、localStorage 或仅限 http 的 cookie 中。恕我直言,你应该把它保存在 http-only cookie 中。
  • 在本地存储中存储令牌等敏感信息存在巨大的安全风险。如果存在 XSS 漏洞,恶意行为者可能会窃取您的令牌。 OWASP 仍然始终建议不要在本地存储中存储任何敏感内容。 cheatsheetseries.owasp.org/cheatsheets/… 所以存储令牌有一个不好的建议。

标签: java spring spring-security jwt


【解决方案1】:

and made some filters so it can work just like session_id with Spring Security - 如果你想在会话中使用 JWT,请不要这样做,这里有一篇文章会告诉你原因:http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/ 如果你只需要会话,那么坚持使用会话。使用代币只会让您的生活变得复杂,您可能会面临一些与代币相关的威胁。

否则,如果您真的想坚持使用 JWT,请查看 Yousaf 评论中链接的答案。

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 2018-05-24
    • 2019-05-09
    • 2019-10-02
    • 2017-05-28
    • 2015-09-01
    • 1970-01-01
    • 2020-01-31
    相关资源
    最近更新 更多