如何理解Token以及它的安全性

这里有关为什么使用token而不是session等我就不再一一赘述啦。我主要是想从它的格式以及安全机制两方面入手进行说明。

格式

众所周知,token由三部分组成——头部(head)、荷载(payload)、签名(signature)。

未经过编码的token格式:x.y.z(这里xyz表示三种不同字符串)

header

经过解码后,头部就是一个json格式数据,alg表示使用的加密算法 typ表示使用的token的类型,使用base64加密(能被解密)。

这里可以再补充一下什么是base64加密吧!

 payload

这里面的内容就是比较多的了,可以分为3种类型

        1、官方预定义

       2、使用者自定义

我们可以将用户的一些基本信息放在其中,例如唯一标识等字段

       3、私密使用者自定义

可以传输一些线下约定好的数据(其实这里我也不知道是什么意思)

signature

这就是核心部分,能够由头部+荷载+公私钥组成,能够选择算法进行加密。一般推荐不可逆算法如:MD5,RSA等

安全机制

是否存在获取token信息可能?

        在https中应该不是大可能的,如果在http中,首先我们需要知道payload中放的大都是唯一标识,设备号等信息,那么我们可以考虑使用密钥将整个token进行加密,接收方再通过密钥进行解密(需要线下商量)

如果篡改token信息怎么办?

        这里我提供的思路是:首先将第一次颁发的token的签名用redis存储起来(过期时间可以与token一致),在后续通信中获取签名,也就是上面所说的z部分,因为一旦涉及到修改数据就会导致签名发生改变。我们在服务端将拿到的token经行加密,与redis中指定的签名进行比对校验。

这里再说一嘴:在学习过程中遇到了两款还不错的token框架auth0和jsonwebtoken,下面附上两者的区别和优缺点

Token插件:Auto0和jsonwebtoken对比 - it610.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值