jwt攻击与防御1

什么是jwt

JWT(英文全称:JSON Web Token) 是一个开放标准(RFC 7519),用于在双方之间安全地表示声明。一种无状态的认证机制,通常用于授权和信息交换。 是目前 最流行的跨域认证解决方案。JWT的声明一般被用在客户端与服务端之间传递身份认证信息,便于向服务端请求资源。

原理

1)客户端提交用户名密码等信息到服务端请求登录,服务端在验证通过后前发一个具有时效性的token,将token返回给客户端

2)客户端收到token后会将token存储在cookie或localStorage中

3)随后客户端每次请求都会携带这个token,服务端收到请求后校验该token并在验证通过后返回对应资源

JWT结构与内容

形式

一般是一段eyJ开头,由英文点分割开的三段字符

结构与内容

 

三段字符串分别对应:

1)Header:加密算法与Token类型;

2)Payload:用户信息和附加信息的声明,一般是Json类型的键值对;

 

 

3)Signature:

①base64加密后的Header

②base64加密后的Payload

③签名加密算法私钥。

jwt实战 

从安全性的角度来看,至少存在两个潜在的问题。

1、缺乏机密性-我们能够轻松解码有效载荷payload(和报头header)。

2、用户插入另一个操作(例如删除)并绕过授权

靶场地址:Leaky JWT

敏感信息泄露

 签名后的JWT看似是加密数据,实际上是极易解密的,若开发者在生成token时将非必要的信息放入到payload中,则可能造成敏感信息泄露,图中模拟我们已经获取到了某位用户的token,要求使用这段token信息进行登录。

将token在网站中解密可以看到用户名和密码信息。

 密码用密文加密,猜测为MD5,进行MD5解密,解密出密码。

 将用户名和密码填入,尝试登录,可以看到登录成功。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值