网站首页 > 博客文章 正文
前面讲完如何在Python主流的Web服务器框架下,实现JWT和SSO单点登录后,钢铁老豆想要和大家继续讨论一下关于JWT避不开的一个安全问题:如何你的JWT泄露了,服务器应该怎么应对这种挑战呢?
现在的这个网络时代,越来越依赖数字身份和在线服务,JSON Web Tokens(JWT)也成为了网站和应用中身份验证和信息交换的一个重要工具。不过,随着技术的广泛应用,安全问题也随之而来。JWT一旦被泄露,后果不言而喻,那是相当相当的严重,跟删库跑路有得一拼。接下来,就让钢铁老豆抛个砖,介绍几种应对方案:
短期有效期 + 刷新令牌
- 方案说明:将JWT的有效期设置得较短(如15分钟),并引入刷新令牌(Refresh Token)机制。刷新令牌拥有更长的有效期,并且存储在安全的地方,只用来获取新的JWT。
- 操作流程:
- 用户首次登录时,服务器同时返回JWT和刷新令牌。
- 用户携带JWT访问资源,如果JWT过期,客户端使用刷新令牌请求新的JWT。
- 如果刷新令牌也过期,用户需要重新认证。
黑名单机制
- 方案说明:在服务器端维护一个已知泄露或已废弃的JWT的黑名单。这要求系统具有维持会话状态的能力,可以使用数据库或缓存系统(如Redis)实现。
- 操作流程:
- 当用户登出或JWT被认为是泄露的时候,将该JWT的唯一标识(比如jti声明)加入到黑名单中。
- 在每次请求中,检查JWT的标识是否在黑名单中,如果存在,则拒绝该请求。
JWT版本控制
- 方案说明:为每个用户维护一个JWT版本信息,在用户密码更改或认为JWT可能被泄露时更新版本信息。
- 操作流程:
- 在JWT中添加一个版本声明(如ver)和在用户数据库中存储相同的信息。
- 用户每次请求时,检查JWT中的版本信息是否与数据库中的一致,不一致则认为JWT无效。
主动检查机制
- 方案说明:通过在JWT中嵌入一些必须通过服务器端验证的信息,如用户的会话标识,然后每次请求都对这个信息进行验证。
- 操作流程:
- 用户每次请求时,服务端除了验证JWT的签名外,还要检查其中的会话标识等信息。
- 如果用户登出或更改密码,服务端更新这些信息,使得旧的JWT无法通过验证。
钢铁老豆不做Web开发,但觉得头两个方案应该还是更主流些,有经验的朋友们,你们觉得呢?欢迎给大家分享你在开发过程中的一些心得体会。
欢迎点赞+收藏+评论+关注,每天学习一点Python小知识,无论基础、模块、数据分析、深度学习和Ai,总有你感兴趣的。另外,想咨询转行IT和算法入门的朋友,欢迎关注后私聊。我是钢铁老豆,一个30岁转行IT、自学成为算法工程师、想用Ai点亮孩子小小世界的Pythoner。
猜你喜欢
- 2024-10-04 微服务网关鉴权:gateway使用、网关限流使用 用户密码加密 JWT鉴权
- 2024-10-04 认证授权方案之JwtBearer认证(jwt认证过程)
- 2024-10-04 如何使用开放标准 JWT 来保护你的Spring Web应用安全?
- 2024-10-04 go语言从零实现 JWT 认证(go语言test)
- 2024-10-04 cookie、session、token、jwt认证方式这下全有了
- 2024-10-04 轻松上手SpringBoot Security + JWT Hello World示例
- 2024-10-04 基于session和Token的会话管理模式,什么是JWT?说说它的实践方式
- 2024-10-04 云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权
- 2024-10-04 学成在线-第16天-讲义- Spring Security Oauth2 JWT
- 2024-10-04 接口测试:A02_HttpRunner前置知识补充_04_Token、JWT和OAuth2
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)