ASP.NET Core 标识(Identity)框架系列(四):闲聊 JWT 的缺点,和一些解决思路

embedded/2024/9/23 4:23:29/

iamge

前言

前面的几篇文章讲了很多 JWT 的优点,但作为技术人员都知道,没有一种技术是万能的 “银弹”,所谓有矛就有盾,相比 Session、Cookie 等传统的身份验证方式,JWT 在拥有很多优点的同时,也有着不可忽视的缺点,比如:

JWT 的缺点

无法撤销

一旦 JWT 被发放给客户端,在有效期内这个 Token 就一直有效,无法被提前撤回

体积大,吃带宽

JWT 中包含了一些额外的信息,可能会使得 JWT 体积较大,增加网络传输开销

安全性比较差

JWT 中的信息是以明文形式存储的,容易被破解

一些解决的思路

1. 无法撤销 的解决思路

  1. 在用户表中增加一个整数类型的列 JWTVersion,它代表最后一次发放出去的令牌的版本号;
  2. 每次登录、发放令牌的时候,都让 JWTVersion 的值自增,同时将 JWTVersion 的值也放到 JWT 的负载中;
  3. 当执行禁用用户、撤回用户的令牌等操作的时候,让这个用户对应的 JWTVersion 的值自增;
  4. 当服务器端收到客户端提交的 JWT 后,先把 JWT 中的 JWTVersion 值和数据库中的 JWTVersion 值做比较,如果 JWT 中 JWTVersion 的值小于数据库中 JWTVersion 的值,就说明这个 JWT 过期了,这样就实现了 JWT 的撤回机制。

总结:
这个方案在用户表中保存了 JWTVersion 值,因此它本质上仍然是在服务器端保存状态,这是绕不过去的,它算是一种缺点比较少的妥协方案,相类似的方案还有比如维护一个 Token 黑名单的办法,相对步骤比较多

2. 体积大,吃带宽 的解决思路

  1. 精简 JWT 中的信息,只存储必要的信息。将一些非敏感且不经常变动的信息存储在服务端,而不是每次都包含在JWT中

  2. 设置较短的 JWT 过期时间,减少 JWT 的有效期,从减小 JWT 的体积

  3. 传输时对 JWT 进行压缩,减小 JWT 的大小,常见的压缩算法包括 GZIP 和 DEFLATE

  4. 在使用对称加密算法时,可以选择较小的密钥长度,减小 JWT 的大小

  5. 选择更高效的加密算法和签名算法,减小 JWT 的大小

  6. 定期清理过期的 JWT,避免过多无效 JWT 的存储占用带宽

3. 安全性比较差 的解决思路

  1. 不在 JWT 中存储敏感信息,如密码等,降低信息泄露的风险
  2. 将 JWT 中的信息放在 Redis 上,Token 只放相应的 key,服务端拿到 token 后,再到 Redis 取具体的信息并反序列化为对象

http://www.ppmy.cn/embedded/13730.html

相关文章

豆瓣9.7,这部Java神作第3版重磅上市!

Java 程序员们开年就有重磅好消息,《Effective Java 中文版(原书第 3 版)》要上市啦! 该书的第1版出版于 2001 年,当时就在业界流传开来,受到广泛赞誉。时至今日,已热销近20年,本书第…

UE5 android package

1. plug 里删除所有IOS插件; 2.jdk11必须; 3.setting -windows-compiler Version 设置成你的版本; 4.andorid 变绿; 5.target SDK version :34; 6.package game date inside apk? check 7.allow large OBB files c…

ENABLE_GOLDENGATE_REPLICATION database parameter (Doc ID 1568417.1)

OGG ENABLE_GOLDENGATE_REPLICATION 参数支持的版本 ENABLE_GOLDENGATE_REPLICATION database parameter (Doc ID 1568417.1)

伙伴匹配(后端)-- 数据库表设计

文章目录 用户表标签表队伍表用户队伍表sql语言分类(题外话)待更新... 在后端开发中,数据库表设计真的是非常重要的一环了,进入公司熟悉业务第一个要看的也是数据库的表,接下来就让我们看看本项目的数据库表有哪些吧(暂…

李廉洋:4.24-4.25现货黄金,WTI原油区间震荡,走势分析。

黄金消息面分析:金银近日回调。随着伊朗方面淡化以色列最新反击,中东地区局势没有进一步发酵下,风险溢价下降金银出现较大幅度调整。由于近期高于预期的通胀数据,降息预期持续降温。昨日疲软的美国PMI以及以色列在加沙攻击的加剧支…

汇智知了堂晨会聚焦:NAS应用如何赋能网络安全实战

在近期汇智知了堂网络安全75班的晨会上,一场关于NAS应用的深入分享完美展开。学员们以饱满的热情投入到这场安全讨论中,共同探索网络安全的新天地。 此次分享会聚焦于NAS的应用,旨在帮助学员们更好地了解NAS的定义与功能,掌握其在…

flutter(学习日记篇-1)

windows配置开发环境等 1.下载sdk---------flutter官网 2.配置环境变量 ①在系统中找到环境变量的配置位置,在用户变量模块中选中变量为path的项进行编辑(没有path就新建),然后找到刚才下载的flutter的位置,点击目录…

YOLOv9改进策略 | 添加注意力篇 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)

一、本文介绍 本文给大家带来的改进是Triplet Attention三重注意力机制。这个机制,它通过三个不同的视角来分析输入的数据,就好比三个人从不同的角度来观察同一幅画,然后共同决定哪些部分最值得注意。三重注意力机制的主要思想是在网络中引入…