这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记。
Sesson和Cookie中的一些问题
Sesson和Cookie这里就不进行赘述
Sesson的问题是需要在服务端进行一次记录,当用户多的情况下服务端的开销会明显增大
Cookie的问题时如果Cookie在传输的过程中被截获,用户就很容以收到跨站请求伪造的攻击
JWT
JWT是由三部分信息所拼接而成的一个字符串,这三个部分分别是:
-
header
- 这里存储了两部分的信息一个时类型的声明,一个是加密算法的声明,表示对后面数据加密使用的是那种加密算法
//类似这个样子
{
'typ' : 'JWT'
'alg' : 'HS256'
}
之后将头部信息进行base64加密,就构成了字符串中的第一部分
-
playload
- 这个部分存储了一些字段信息,向JWT过期时间、JWT身份唯一标识(主要用来作为一次性token,回避重放攻击)等字段,在这里面不能够存储一些data信息,这里的数据是能够被解密出来的
{
"name" :"xxx"
"id" :"xxx"
.....
}
然后也对其进行base64加密得到第二部分
-
signature
- 第三部分是jwt的一个签证信息这个信息由前面两部分的结果和secret三部分组成
- 这个部分通过前面两个加密的组合 header +'.'+playload同时进行加盐secret组合加密构成jwt的第三部分
最终将上面三个部分拼接在一起就组成最终的JWT
ps:secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,在任何场景都不应该流露出去。一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。