2019 年我应该在哪里存储我的 JWT,localStorage 真的不安全吗?

Posted

技术标签:

【中文标题】2019 年我应该在哪里存储我的 JWT,localStorage 真的不安全吗?【英文标题】:Where should I store my JWT in 2019 and is the localStorage really not secure? 【发布时间】:2019-10-15 06:46:16 【问题描述】:

有趣的话题。 由于我正在使用 Node.js ApiReact Redux Client 创建我的第一个真正更大的项目,因此我需要身份验证。

现在我不知道如何“以正确的方式”处理身份验证。

因为我阅读了很多关于它的主题,但意见不同。

所以一开始有人立刻说:不要将 localStorage 与 JWT 一起使用。

例如这里有一篇文章:https://dev.to/rdegges/please-stop-using-local-storage-1i04

这是来自 auth0 的另一篇文章:https://auth0.com/docs/security/store-tokens

但后来我深入研究了广泛的身份验证世界,发现很多人说:

“localStorage 和 cookie 一样安全”

比如从第一篇第一条评论,第三条回复(这里有链接:https://dev.to/jondubois/comment/373l)

我的意思是他说得对吗?在阅读了该文章以及其他一些文章和 cmets 之后,如果您不是拥有非常敏感数据的银行,那么将其存储在 localStorage 中是完全可以的。

所以我在 2019 年,不是初学者,也不是经验丰富的开发人员,我问自己应该如何实现此身份验证流程,而不至于过于复杂(有将 jwt 存储到 httpOnly cookie 的流程例如)但另一方面也不是很容易破解。

我正在尝试创建一个论坛应用程序。您可以注册,创建自己的论坛,然后其他用户可以注册此论坛。所以基本身份验证,我只需使用 JWT 发送 user_id 和令牌。

非常感谢你们的意见和建议。

【问题讨论】:

【参考方案1】:

在早期阶段存储 JWT 就像您需要的一样简单。将其作为从服务器发回的哈希值存储在本地存储中。不是普通的 JWT 令牌。并使用httpOnly

【讨论】:

【参考方案2】:

我也在寻找这个答案,最后,我发现了关于 JWT 令牌安全性的非常有趣和有用的文章,即: - https://security.stackexchange.com/questions/179487/store-splitted-jwt-for-csrf-protection-and-refresh-strategy - https://medium.com/@jcbaey/authentication-in-spa-reactjs-and-vuejs-the-right-way-e4a9ac5cd9a3 TL;DR 您应该将令牌的第一部分存储在带有 httpOnly: true 参数的 cookie 中,并将其余令牌存储在不带 httpOnly 参数的 cookie 中,并且 javascript 可以在浏览器中获取并使用您的 JWT 有效负载信息。

【讨论】:

这篇文章不错,但我想链接您文章中提到的更详细的文章,以免人们掩盖它,因为我发现它更有帮助medium.com/lightrail/…跨度>

以上是关于2019 年我应该在哪里存储我的 JWT,localStorage 真的不安全吗?的主要内容,如果未能解决你的问题,请参考以下文章

我应该在哪里存储 JWT 令牌?

在哪里存储 JWT 令牌?

Jwt 中 token应该存储到哪里?

我应该在哪里存储“非单页”前端应用程序的 JSON Web 令牌

JWT应该保存在哪里?

我如何在我的反应应用程序中实现 jwt 验证