servlet的 session什么时候用_为什么说不建议用JWT作为Session系统

为什么说不建议用JWT作为Session系统?

什么是JWT

JWT,全名JSON Web Token是一个开放标准,它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。

51f10f37000e31998d45438cd5e74598.png

重要问题:安全性

作为安全级别要求很高的Session认证,JWT token的无需持久化,随取随用的特性,或是有人说的优势,其实也是很严重的列劣势:安全问题。

通过JWT token,你可以知道系统给你加密的是一串什么内容,通过jwt.io的解密,就可以看到内容。

a0bbab5001a90c7e25d025c643324ca1.png

若对外包装的sub是一个有规律的信息,比如递增的用户编号(当然这本是一个大坑),通过这套算法,和尝试性的sub,可以套出可以通过JWT认证通过token,从而盗用系统用户。尽管可以在开始,初始化一个通过hmacShaKey加密的secretkey,而一旦这个key泄露,系统用户几乎就透明了。

b79aab82f13b85654da780ab33497bd1.png

那既然即使被人套到了,也不至于透明,不是可以销毁吗?这就是JWT安全上又一个麻烦所在,它无法被单独销毁,而且不管你在什么终端使用,只要认证信息能匹配上算法结果,就会通过,想及时止损,都非常麻烦。

致命缺点:无法自动续期

JWT的过期时间,通过setExpiration来设置,设好后就不可变更了,你想实现“用户操作后,自动续期”的需求,办不到。无法主动销毁,还不能设置续期,这在Session场景下是很难受的,且不说限制单点登录、单平台登录等更多细节问题。

什么情况下用

天生我材必有用,JWT名声赫赫,自然有它可用之处。具体可以做什么用,了解了它的特性后,自己做些创新是最好的。这里推荐在需要一次性的授权令牌场景时,使用JWT是很合适的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值