考虑到某些要求,让 JWT 永不过期是否可以?

Would it be okay to have JWTs to never expire given some requirements?

我不想实现诸如 redis 或在数据库中存储刷新令牌之类的东西。我想利用 JWT 的 "full power"(可扩展性,无需存储与 sessions/tokens、无状态等相关的任何内容)

假设我有一个设置为安全的 cookie,httpOnly,samesite=lax。 当用户关闭网站时,cookie 将过期,除非用户指定了 "remember me" 选项。在这个 cookie 中,将存储一个永不过期的 JWT。

当然也会实现一些CSRF保护!

这足够安全吗?鉴于上述要求(cookie 要求),攻击者如何从客户端检索 JWT?

如果攻击者完全无法访问 JWT,那么就没有必要撤销 JWT 或让它在某个时候过期,对吗?

恕我直言,如果您要保护敏感信息,在 cookie 中使用长期有效的身份验证令牌是危险的。用户可能会被社会工程学欺骗以打开开发工具并共享 cookie 内容。安全是痛苦的,但在日志中得到回报 运行。

对于“这足够安全吗?”这个问题,只有您可以回答并决定是否要采用此解决方案。

对于局外人的观点;我认为没有过期的 JWT 集已经不是好的做法,因为这样做你有点放弃了一些无限的访问权限。

然后你写“攻击者将如何检索....”。这是另一个不安全的假设。 "successful attack" 的正确含义通常是攻击者以您没有预料到的方式做某事。

总结一下:你想的是可能的;但不推荐。

要获得更深入的意见,您可以查看更多文档或咨询专家。首先你可以看看这几个 JWT tutorials.