使用黑名单缓存使JWT无效是否安全?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用黑名单缓存使JWT无效是否安全?相关的知识,希望对你有一定的参考价值。

我发现的最流行的例子(以及JWT-Auth库中的代码)提供了通过黑名单使JWT无效的机制。如果令牌需要被无效,则将其添加到黑名单中,该黑名单基本上只是一个易受波动影响的缓存。

我对我的应用程序的关注是,如果攻击者收到了某人的JWT,那么如果服务器被迫重启(或导致缓存被擦除的任何其他情况),那么JWT将不会被无效并且攻击者可以使用以前无效的令牌(尽管不太可能)。我目前正在决定实施引用令牌,这样JWT可以手动失效,但攻击者可能已经在您意识到并使令牌无效时已经完成了损害。

是否暗示令牌的生命周期足够短,足以证明基于缓存(可以清除/擦除/丢失)使其失效?

答案

这一切都取决于您的威胁分析。您的应用必须如此安全,您绝对需要能够撤销受损的JWT令牌吗?

或者为你的代币保留更短的时间更有意义吗?如果生存时间是一个小时,那么在您的客户检测到盗窃之前令牌已过期的可能性要大得多,联系您的支持部门并让他们撤销令牌。

如果您仍然觉得需要能够撤销JWT令牌,请使用可以集中撤销的引用令牌。拥有自己的黑名单可能比它的价值更麻烦。如果将缓存保留在内存中,则必须处理崩溃和重新启动。如果您有多个服务器,则需要保持多个缓存同步或使用分布式缓存。

以上是关于使用黑名单缓存使JWT无效是否安全?的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Cloud Gateway 中创建 JWT 黑名单

JWT 注销:在微服务架构中的服务之间共享被列入黑名单的无效令牌

PHP-Open-Source-Saver / jwt-auth 无效和黑名单 JWT 令牌

使用 Laravel JWT 重新认证时将旧令牌列入黑名单

记一次laravel-jwt修改黑名单所用redis数据库

JWT 和会话的黑名单有啥区别?