小声bbb
说到系统的安全识别,记得自己第一个项目,用的就是session,用户登录进来以后,给他session标记登录,记录id进去,轻轻松松,设计的操作也很简单,类似操作HashMap。
这大概也有1年多快两年了,现在回头看真的是可怕,几乎在裸奔
众所周知,平常使用的Session是存储在服务器的一种技术,可以理解为一个会话id,每次使用HTTP请求,都会携带一个sessionId,服务器根据这个SessionId去找对应的session
session一遍是和cookie搭配使用的,cookie是不安全的,毋容置疑(很多浏览器没限制读取),session则是系统生成的一个较长的sessionId,在过期时间内破解session比较困难。
关于session安全性文章,搜一下csdn,很多的
Session安全性
しかし,我预判了你的预判
Session可以理解为是存储在服务器端,key叫sessionId的一个map结构。
Session类似于打电话(没有来电号码显示),在一开始你表明了自己的身份,通话结束后,就失去了效果(实际上使用的是过期的手段)。
当访问的数量增加,记录登录成为一个很大的压力(有记录,有过期操作等,每个人的session信息都要进行维护,且需要存储),是否有一种服务器不用操心的办法?
那么下面就是JWT(或者叫Token)发光发热的舞台了!
只是为了构建JWT请快步到相应的位置
啥是JWT
JWT的全称JSON Web Token
这里我先简单说一下JWT是个啥东西,然后分析为什么好用
JWT可以看做一个身份证,
众所周知,身份证有这几个特性:
- 身份证不能伪造(别动歪脑筋)
- 身份证上有个人信息
- 身份证上有签发机关
- 身份证上有有效期
事实上,这几乎就是JWT了
JWT的特性完全相同,甚至可以用理解身份证的角度来理解他
- 你的网站签发一个令牌(跟我念:身份证)
- 客户端拿着这个令牌找你访问
- 你用你三岁就发明的识别机对令牌(身份证)识别
- 你已经明白他是自己人了,并邀请他一起进来看电视
- 以下为收费项目~~
咳咳,不搞hs,回到正轨,通过我们一本正经的分析,
我们不难发现:Token可以做到在你脸前裸奔,但你却无可奈何
盘点主要特性:
- 存储简单的信息,并且大家都能获取信息
- 无法作假
- 存在过期
其中第一点很重要,token里面的信息是公开的,所以别放密码.
这里插一嘴,jwt里面的信息确实是公开的,只不过大家都进行了二次加密,让人感觉好像jwt里面的信息是不公开的
@某大学某实验室的某学弟
细说JWT
JWT通常情况下是三段,但是也存在一些丧心病狂的,把token又加密了一遍(内行,我直呼内行)
下面是官方给的一个demo(例子)
这个网站也是可以访问的,可以自己试着玩,也可以用来测试
https://jwt.io/
其中很明显为三个部分:HEADER(头部