JAVA安全-JWT安全及预编译CASE注入

小迪

https://www.bilibili.com/video/BV1JZ4y1c7ro?p=39

通过前期WEB漏洞学习,掌握了大部分安全漏洞的原理及利用,但是在各种脚本语言开发环境下,会存在新的安全问题,其中脚本语言类型PHP,Java,Python等主流开发框架会有所差异。

在这里插入图片描述
在这里插入图片描述
什么是JWT?
相对于传统session-cookie身份校验机制,Json web token是为了在网络应用环境中传递声明而执行的一种基于Json的开放标准,该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SS0)场景,JWT的声明一般被用来在身份提供者和服务器间传递认证用户身份信息,以便从资源服务器获取资源,该token也可以之恶用于认证,加密。
在这里插入图片描述
简单来说 JSON Web token 是一种跨域验证身份的方案,JWT不加密传输的数据,但能够通过数字签名来验证数据未被篡改(小迪师傅表示质疑)
JWT分为三部分,头部(Header),声明(Claims/payload),签名(Signature),三个部分用点(.)隔开

1.header用来声明token的类型和签名用的算法等,需要经过Base64Url编码。

alg
是说明这个 JWT 的签名使用的算法的参数,常见值用 HS256(默认),HS512 等,也可以为 None。HS256
表示 HMAC SHA256。
typ
说明这个 token 的类型为 JWT

2.Claims/payload 用来表示真正的token信息,也需要经过Base64Url编码。

JWT 固定参数有:
iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWT ID 用于标识该 JWT

3.签名
服务器有一个不会发送给客户端的密码(secret),用头部中指定的算法对头部和声明的内容用此密
码进行加密,生成的字符串就是 JWT 的签名。
下面是一个用 HS256 生成 JWT 的代码例子
HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload),secret)

大概过程:
1、用户端登录,用户名和密码在请求中被发往服务器
2、(确认登录信息正确后)服务器生成 JSON 头部和声明,将登录信息写入 JSON 的声明中(通常不
应写入密码,因为 JWT 是不加密的),并用 secret 用指定算法进行加密,生成该用户的 JWT。此时,
服务器并没有保存登录状态信息。
3、服务器将 JWT(通过响应)返回给客户端
4、用户下次会话时,客户端会自动将 JWT 写在 HTTP 请求头部的 Authorization 字段中
5、服务器对 JWT 进行验证,若验证成功,则确认此用户的登录状态
6、服务器返回响应
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值