javascript - 2019 年我应该在哪里存储我的 JWT,localStorage 真的不安全吗?
问题描述
有趣的话题。由于我正在使用Node.js Api和React Redux 客户端创建我的第一个真正更大的项目,因此我需要身份验证。
现在,我不知道如何“以正确的方式”处理身份验证。
由于我阅读了许多有关它的主题,但意见不同。
所以一开始有人立刻说:不要将 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 )
我的意思是他说得对吗?在阅读了该文章以及其他一些文章和评论后,如果您不是拥有非常敏感数据的银行,那么将其存储在 localStorage 中是完全可以的。
所以我在 2019 年,不是初学者,也不是经验丰富的开发人员,我问自己我应该如何实现这个身份验证流程,而不会过于复杂(例如,有一些流程用于将 jwt 存储到 httpOnly cookie 中)但是在另一方面也不是很容易破解。
我正在尝试创建一个论坛应用程序。您可以注册,创建自己的论坛,然后其他用户可以注册此论坛。所以基本身份验证,我只需使用 JWT 发送 user_id 和令牌。
我非常感谢您的意见和建议。
解决方案
我也在寻找这个答案,最后,我发现了关于 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 你应该存储第一部分带有参数的 cookiehttpOnly: true
中的令牌和不带参数的 cookie 中的其余令牌,httpOnly
Javascript 可以在浏览器中获取和使用您的 JWT 有效负载信息。
推荐阅读
- xamarin - 如何将视图检测为父视图
- kotlin - Protobuf 中的 Kotlin 数据类支持
- c# - 使用 System.IO.Directory.CreateDirectory() 时出现 FileNotFoundException
- c# - Windows 用户密码验证
- sql-server - SQL使用存储过程从excel中插入日期
- java - @Where with @SecondaryTable 不适用于 Hibernate
- python - 关于python中find()函数的问题
- html - Mailchimp Outlook 条件 CSS 未生效
- javascript - 使异步函数同步运行 - Javascript
- reactjs - 传递道具以在测试中反应组件