【发布时间】:2017-03-06 22:25:32
【问题描述】:
感谢您花时间阅读我的问题!我今天一直在研究 JWT。最初我认为现代共识是 JWT 对两种主要类型的攻击开放,除非存储在 httpOnly cookie(只能由服务器发出)中。
背景:
但是,我今天了解到,只要您不将任何机密用户信息放入 JWT 有效负载中,黑客可以访问令牌并对其进行解编码,因为它最多可能只是显示一个用户的唯一 ID。一旦服务器验证 JWT 并获取有效负载子密钥中的 ID,我就可以处理在服务器上获取用户密码和其他机密信息。
尽管如此,我仍然不是 100% 清楚如果黑客拦截了令牌 MID 请求/响应,并且令牌永不过期,会发生什么。据我了解,黑客将能够访问用户的帐户并在用户页面上乱七八糟,并且没有真正的方法可以从黑客那里撤销令牌,即使用户重置了他或她的密码,因为黑客仍然存在拥有令牌并且服务器不够聪明,无法意识到它不是预期的用户。
无论如何,我意识到我不能使用 httpOnly cookie 或任何 cookie,因为我仅将后端服务器用作 API,它无法将 cookie 跨服务器传递到我的前端客户端程序(例如 React )。
在这种情况下,似乎只有两个地方可以存储您的 auth JWT:LocalStorage 或 SessionStorage...我想大多数人会使用 LocalStorage,因为关闭浏览器不会破坏令牌。
我的主要问题是:
LocalStorage 或 SessionStorage 是存储 JWT 的唯一“合理”位置,一个比另一个更安全,为什么?
谢谢!
【问题讨论】:
标签: node.js api local-storage token jwt