0


如何理解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


本文转载自: https://blog.csdn.net/m0_59602613/article/details/126173113
版权归原作者 还在路上的咩 所有, 如有侵权,请联系我们删除。

“如何理解Token以及它的安全性”的评论:

还没有评论