next.js 前端如何保护JWT令牌

fd3cxomn  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(142)

我正在使用NextJS和Sping Boot 开发一个应用程序。我在Spring Security中使用JWT身份验证,所以我做了一个端点来接受用户的凭据,并在成功登录尝试时返回一个JWT令牌。
但是,现在我想知道在前端存储令牌的最佳方法是什么,我应该使用刷新令牌机制吗?
我读过很多关于这方面的文章,每次读到另一篇文章,我都会感到更加困惑,以下是我的想法:
1.我知道我需要在请求头中发送令牌作为承载令牌,所以我想我不能将其存储在cookie中。
1.正因为如此,我的选择是会话存储和本地存储,由于其寿命长,我认为本地存储更适合这种情况。
1.我认为可以在存储令牌之前对其进行加密,这样即使令牌被盗也无法使用
1.所以我所要做的就是制作一个组件来解析令牌,如果令牌没有过期,用户将能够访问内容。
毕竟,我读到将其存储在本地存储可能会导致XSS攻击,但是NextJS已经从XSS攻击中清理用户的输入了吗?那么我的方法足够安全吗?

ebdffaop

ebdffaop1#

没有办法在浏览器中安全地存储JWT,这就是为什么你不应该使用JWT作为会话的原因之一。
JWT不应该分发给浏览器,正如你所看到的,它们可以通过XSS攻击被盗,你不能注销用户,你不能注销所有设备,令牌可以在中间人攻击中被盗,可以在CSRF攻击中使用,等等。
仅仅因为您可以免受XSS的攻击并不意味着您可以免受其他攻击。
同样,仅仅因为你现在是安全的并不意味着你明天也会安全。如果第三方依赖中存在漏洞怎么办?那不是你的代码。
真实的安全在前端和后端之间使用cookie,然后cookie被交换为在后端的微服务之间内部使用的令牌。
遗憾的是,大多数在浏览器中使用JWT的人/教程从未构建过真实的安全性。

相关问题