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

问题描述 投票:2回答:1

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

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

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

security authentication web-applications jwt jwt-auth
1个回答
2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.