4、JWT常见面试总结

JWT面试常见问题 JWT面试常见问题 jwt和security的对比: JWT的优点: 无需再服务端存储用户数据,减轻服务端压力 轻量级,json风格,比较简单 跨语言 JWT的缺点: token一旦签发,无法修改 无法更新token有效期,用户登录状态刷新难以实现 无法销毁一个token,服务端不能对用户状态进行绝对控制 不包含权限控制 SpringSecurity: 优点: 用户信息保存再服... 阅读详情

JWT常见面试总结

1.JWT token 泄露了怎么办?

使用 https 加密你的应用,返回 jwt 给客户端时设置 httpOnly=true 并且使用 cookie 而不是LocalStorage 存储 jwt,这样可以防止 XSS 攻击和 CSRF 攻击。

2.Secret 如何设计?

jwt 唯一存储在服务端的只有一个 secret,个人认为这个 secret 应该设计成和用户相关的属性,而不是一个所有用户公用的统一值。这样可以有效的避免一些注销和修改密码时遇到的窘境。

3.注销和修改密码?

传统的 session+cookie 方案用户点击注销,服务端清空 session 即可,因为状态保存在服务端。但 jwt 的方案就比较难办了,因为 jwt 是无状态的,服务端通过计算来校验有效性。没有存储起来,所以即使客户端删除了 jwt,但是该 jwt 还是在有效期内,只不过处于一个游离状态。
分析下痛点:注销变得复杂的原因在于 jwt 的无状态。
提供几个方案,视具体的业务来决定能不能接受:

仅仅清空客户端的 cookie,这样用户访问时就不会携带 jwt,服务端就认为用户需要重新登录。这是一个典型的假注销,对于用户表现出退出的行为,实际上这个时候携带对应 的 jwt 依旧可以访问系统。

清空或修改服务端的用户对应的 secret,这样在用户注销后,jwt 本身不变,但是由 于 secret不存在或改变,则无法完成校验。这也是为什么将 secret 设计成和用户相关的 原因。

借助第三方存储自己管理 jwt 的状态,可以以 jwt 为 key,实现去 Redis一类的缓存中间件中去校验存在性。方案设计并不难,但是引入 Redis 之后,就把无状态的 jwt 硬生生变成了有状态了,违背了 jwt的初衷。实际上这个方案和 session 都差不多了。

修改密码则略微有些不同,假设号被到了,修改密码(是用户密码,不是 jwt 的 secret)之后,盗号者在原 jwt 有效期之内依旧可以继续访问系统,所以仅仅清空 cookie 自然是 不够的,这时,需要强制性的修改 secret。

4.如何解决续签问题

传统的 cookie 续签方案一般都是框架自带的,session 有效期 30 分钟,30 分钟内如果有访问,session 有效期被刷新至30 分钟。而 jwt 本身的 payload 之中也有一个exp 过期时间参数,来代表一个 jwt 的时效性,而 jwt 想延期这个exp 就有点身不由己了,因为 payload 是参与签名的,一旦过期时间被修改,整个 jwt 串就变了,jwt 的特 性天然不支持续签。

解决方案

1.每次请求刷新 jwt。

jwt 修改 payload 中的 exp 后整个 jwt 串就会发生改变,那就让它变好了,每次请求都返回一个新的 jwt给客户端。只是这种方案太暴力了,会带来的性能问题。

2.只要快要过期的时候刷新 jwt

此方案是基于上个方案的改造版,只在前一个 jwt 的最后几分钟返回给客户端一个新的jwt。这样做,触发刷新 jwt基本就要看运气了,如果用户恰巧在最后几分钟访问了服务器,触发了刷新,万事大吉。如果用户连续操作了 27 分钟,只有最后的 3分钟没有操作,导致未刷新 jwt,无疑会令用户抓狂。

3.完善 refreshToken

借鉴 oauth2 的设计,返回给客户端一个 refreshToken,允许客户端主动刷新 jwt。 一般而言,jwt
的过期时间可以设置为数小时,而 refreshToken 的过期时间设置为数天。

4.使用 Redis 记录独立的过期时间

在 Redis 中单独为每个 jwt 设置了过期时间,每次访问时刷新 jwt 的过期时间,若 jwt 不存在与 Redis 中则认为过期。

5.如何防止令牌被盗用?

令牌:

eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJObzAwMDEiLCJpYXQiOjE1NjkxNTg4MDgsInN1YiI6IuS4u-mimCIsImlzcyI6Ind3dy5pdGhlaW1hLmNvbSIsImV4cCI6MTU2OTE1ODgyMywiYWRkcmVzcyI6IuS4reWbvSIsIm1vbmV5IjoxMDAsImFnZSI6MjV9.lkaOahBKcQ-c8sBPp1Op-siL2k6RiwcEiR17JsZDw98

如果令牌被盗,只要该令牌不过期,任何服务都可以使用该令牌,有可能引起不安

全操作。我们可以在每次生成令牌的时候,将用户的客户端信息获取,同时获取用户的 IP

信息,然后将 IP 和客户端信息以 MD5 的方式进行加密,放到令牌中作为载荷的一部分,

用户每次访问微服务的时候,要先经过微服务网关,此时我们也获取用户客户端信息,同时

获取用户的 IP,然后将 IP 和客户端信息拼接到一起再进行 MD5 加密,如果 MD5 值和载

荷不一致,说明用户的 IP 发生了变化或者终端发生了变化,有被盗的嫌疑,此时不让访问

即可。这种解决方案比较有效。 当然,还有一些别的方法也能减少令牌被盗用的概率,
例如设置令牌超时时间不要太长。

来来来~ 码一万字,带你读懂JWT 1. 为什么要用 JWT ? 认证 在谈起 JWT 之前,我们先了解一下什么是认证。 在登录淘宝、微博等软件或者网站之前,我们需要通过填写账号和密码来校验身份。认证是用来验证用户身份合法性的一种方式。 那我们登录成功之后,网站如何记录我们的身份信息呢? 前面我们在学习 servlet 的时候,知道了传统的系统主要是通过 session 来存储用户的信息。session 将用户的信息存储在服务端。 但是随着用户数量的增多,服务端就需要存一堆用户的认证信息,这种方式会不断增加服务端的压力.. 阅读详情

相关推荐

面试官:Session和JWT有什么区别?

JWT是一种开放标准(RFC 7519),用于在网络上安全传输信息的简洁、自包含的方式。它通常被用于身份验证和授权机制。JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部(Header):包含了关于生成该JWT的信息以及所使用的算法类型。载荷(Payload):包含了要传递的数据,例如身份信息和其他附属数据。JWT官方规定了7个字段,可供使用:iss(Issuer):签发者。sub(Subject):主题。aud(Audience):接收者。exp。

2401_85373732的博客 1531

JWT面试题

一、JWT出现的原因 1.1 http无状态协议 http是无状态的协议,也就是说当客户端发来请求时,服务端并不清楚该请求是哪台主机发出的,因此需要有一种识别和鉴定机制来实现这一需求 1.2 传统上是采用给用户分配唯一session_id的方式实现这一需求 1)客户端登录成功后,服务器会给每一台主机分配一个唯一的session_id,用来区分他们,除了存入服务器的缓存,数据库或者内存中,还会把这个session_id返回给相应的主机, 2)主机收到session_id后会存入cookie中,以后主机的每一次

maotou526的博客 2683

超详细的HTTP面试题

Hello,我是 Alex 007,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。 01.HTTP是什么?(初级) HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP协议是一个基于TCP...

Alex 950

jwt面试问题

看了一个面试题,找的解决办法原帖:https://juejin.cn/post/7347947619746086939#heading-2提示:以下是本篇文章正文内容,下面案例可供参考不要将所有信息存储在 JWT 中:只存储必要的身份和授权信息,避免存储敏感数据。JWT 并非绝对安全:其安全性取决于正确的使用方式和配置,如使用强加密、短期有效性、HTTPS 传输等。保护 JWT:防止 JWT 被盗用的措施包括使用短期令牌和刷新令牌、撤销机制、绑定 IP 和 User-Agent 以及加密敏感数据。

weixin_45566576的博客 1674

前端大厂最新面试题-jwt.docx

前端大厂最新面试题-jwt.docx

从三个角度理解知识图谱

2012年谷歌首次提出“知识图谱”这个词,由此知识图谱在工业界也出现得越来越多,对于知识图谱以及相关概念的理解确实也是比较绕。自己在研究大数据独角兽Palantir之后开始接触知识图谱,也算对其有了一定了解,这里从三个角度总结一下怎么去理解知识图谱。 几个基本概念:本体、实体、知识库、知识图谱 1、本体是概念的集合,是大家都公认的概念框架,一般不会改变如“人”、“事”、“物”、 “地”、“组...

JavaChaoCo的博客 6903

Java全栈面试核心考点与实战技巧解析

Java全栈开发作为企业级应用开发的核心技术栈,其面试考察点涵盖从JVM原理到微服务架构的完整知识体系。理解JVM内存模型、并发编程机制等底层原理是构建高可用系统的基石,而Spring Boot自动配置、分布式事务等框架技术则体现了工程实践能力。在云原生时代,服务网格、容器编排等新技术栈成为面试加分项。本文以电商系统等典型场景为例,深入解析ConcurrentHashMap优化、多级缓存设计等高频考点,帮助开发者掌握从技术原理到项目落地的完整表达框架。特别针对微服务架构中的服务发现、分布式锁等难点问题,提供

weixin_30268921的博客 358

OpenResty无损升级内嵌nginx版本0DAY漏洞

OpenResty无损升级内嵌nginx版本,nginx

qq1071643762的博客 6905

JWT常见的面试题

JWT 是 JSON Web Token 的简称,是一种开放标准(RFC 7519),用于在各方之间以 JSON 对象安全地传输信息。JWT 的设计目的是为了确保数据的完整性和来源可靠性。

专业的计算机毕业设计指南 1350

2021年软件测试面试题大全

简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审(主要参与人员:开发、测试、产品、测试leader)。 6、开发提交代码至SVN或者GIT ,配管搭建测试环境。 7、执行测试用例,记录发现的问题。 8、验证bug与回归测试。 9、编写测试报告。 10、产品上线。 补充测试用例设计过程: 根据需求得出测试需求 设计测试方

hard_days的博客 20万+

Bellhop海底地形仿真入门:从MATLAB数据导入到3D可视化(附避坑指南)

本文详细介绍了Bellhop海底地形仿真的完整工作流程,从MATLAB数据导入、清洗与坐标转换,到构建.bty输入文件,再到生成高质量3D可视化结果。文章重点解析了数据格式、深度值正负、单位统一及坐标投影等关键环节的避坑指南,并提供了可复用的代码片段,帮助用户高效完成从原始数据到仿真成果的转换。

weixin_29275257的博客 195

jwt面试详解

一种常见的做法是在用户请求时,检查JWT的过期时间,如果即将过期,生成一个新的JWT返回给客户端。例如,我们可以通过Spring Security的过滤器来实现这个功能,当接收到用户的每个请求时,都检查JWT是否即将过期,如果是,则生成新的JWT并在响应中返回给客户端。解决方案:一种常见的做法是在用户请求时,检查JWT的过期时间,如果即将过期,服务器会在响应头部中添加一个新的JWT,客户端在接收到新的JWT后,替换掉旧的JWT。JWT是存储在客户端的,服务器不存储任何关于JWT的信息。

yxg520s的博客 1047

Transformer——从原理、模型架构到内部细节介绍

Transformer模型是一种基于注意力机制的深度学习模型,最早由Google在2017年的论文《AttentionIsAllYouNeed》中提出。自其问世以来就迅速席卷了自然语言处理他(NLP)领域,并在各类主流任务上取得了新的突破,包括机器翻译、语言建模、序列标注和文本分类等。在NLP领域取得巨大成功后,迅速扩展到了计算机视觉(CV)领域,并带来了革命性的变化。这种基于自注意力机制的深度学习模型,不仅在NLP任务中力压群雄,也成为CV领域的新宠。

小拉拉的博客 1万+

JWT 重点讲解

JWT 的载荷是可以自定义的,灵活度提高JWT 是一种开放标准,用于在网络上安全地传输信息。它由三部分组成:头部、载荷和签名。头部包含令牌的元数据,载荷包含实际的信息(例如用户ID、角色等),签名用于验证令牌是否被篡改。JWT 的签名是由头部、载荷和密钥生成的,用于验证令牌是否被篡改。签名使用HMAC算法或RSA算法生成。在验证JWT的签名时,客户端使用相同的密钥和算法生成签名,并将生成的签名与令牌中的签名进行比较。令牌刷新是一种机制,用于解决 JWT 过期后需要重新登录的问题。

Carefree_State的博客 1642

从符号到基元:Token的技术演化史与“词元”汉化的术语学

中文摘要:Token概念演化与"词元"译名的确立 本文系统梳理了"Token"概念从信息论符号到AI基元的完整演化史,揭示了"词元"这一中文译名确立的必然性。概念发展经历了三个阶段:早期作为编译原理中的词法单元(1960s),统计NLP时期作为概率空间的原子(1990s-2000s),以及神经时代成为动态语义载体(2010s后)。随着Transformer架构兴起,Token从静态符号转变为上下文相关的语义基元,其定义彻底突破"词&quo

AllenLV的博客 1224

RT-DETR训练前的准备,将数据集划分成训练集、测试集验证集(附完整脚本及使用说明)

在计算机视觉领域,当我们着手训练一个模型时,。其中,将数据集划分为和更是一项基础性且关键的操作。这篇博客分析了这一划分背后的原因、其重要意义以及如何通过代码实现,帮助大家更好地理解和运用这一技巧,。

Limiiiing的博客 913

jwt无状态登陆常见面试问题总结

1.Jwt和Spring Security的对比: JWT的: 优点: 无需再服务端存储用户数据,减轻服务端压力 轻量级,json风格,比较简单 跨语言 有利于水平扩展 缺点: token一旦签发,无法修改 无法更新token有效期,用户登录状态刷新难以实现 无法销毁一个token,服务端不能对用户状态进行绝对控制 不包含权限控制 SpringSecurity: 优点: 用户信息保存再服务端,服务端可以对用户状态绝对控制 基于Spring,无缝整合,修改登录逻辑,其实就是添加过

weixin_51291483的博客 1986

位置点位到达判断FC(Easy+Codesys+博途平台)

IN rActPositon REAL 轴当前实际位置 1IN arAbsPosition REAL[10] 各工作点位坐标 2IN rDeadZone REAL 位置达到判断域值 范围 3OUT abInAbsPos BOOL[10] 到达各绝对定位点位标志 位置到达输出 4VAR i INT 循环计数 5VAR rErr REAL 位置偏差 6。

RXXW_Dor的博客 537

Java:JWT 从原理到高频面试题解析

JWT(JSON Web Token)是一种基于JSON的轻量级令牌,用于安全传输信息。它由Header(算法和类型)、Payload(用户数据)和Signature(验证签名)三部分组成,通过Base64URL编码。JWT具有无状态、跨域支持等优势,适合分布式系统,但需注意密钥安全、HTTPS传输和避免存储敏感信息。Java中可通过JJWT库实现JWT生成与验证,适用于身份认证场景。面试常考察JWT结构、与Session的区别及安全实践要点。

m0_73884648的博客 1112

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

面试官:什么是JWT?为什么要用JWT?

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络上安全传输信息的简洁、自包含的方式。它通常被用于身份验证和授权机制。JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部(Header):包含了关于生成该 JWT 的信息以及所使用的算法类型。载荷(Payload):包含了要传递的数据,例如身份信息和其他附属数据。JWT 官方规定了 7 个字段,可供使用:iss (Issuer):签发者。

BASK2311的博客 1225

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【JWT】JWT实战应用

官网:https://jwt.io/JSON Web Token,简称 JWT,读音是 [dʒɒt],是一个基于 RFC 7519 的开放数据标准,它定义了一种宽松且紧凑的数据组合方式。其作用是:**JWT是一种加密后数据载体,可在各应用之间进行数据传输**。JWT中一般涵盖了用户身份信息,每次访问时,server校验信息合法性即可。

weixin_52553215的博客 1200

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JWT 单点登录

JWT单点登录相关概念问题及基础操作介绍,附加面试题。

severl的博客 1876

JWT整合Springboot(1)

对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)Java面试精选题、架构实战文档你的支持,我的动力;祝各位前程似锦,offer不断!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!编写测试接口。

2401_84097678的博客 986

JWT 常见疑惑

1、JWT 可以被解密看到payload数据是否不安全? payload 中放的是非敏感数据, 可以被解密看到headers和payload,但是看不到Key,所以其他人不能生成你的token,你的接口便只能用你自己生成的Token 2、HS*与RS*加密算法有何不同? HS256为对称加密算法故密钥只有一个且密钥长度不限制,RSA为非对称加密故分公钥私钥更安全且密钥长度最小为1024 ...

662
上一篇: 3、JWT深入理解及实战
下一篇: 1、端口占用解决方案
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白de成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值