> 文章列表 > 通过对话了解cookie session与token的用途和区别

通过对话了解cookie session与token的用途和区别

通过对话了解cookie session与token的用途和区别

1 先来了解cookie与localstorage

通过对话了解cookie session与token的用途和区别

1.1 http的无状态

用户: 我想看csdn我有多少粉丝了(http请求)

服务器:你是?请告诉我你的名字和密码,我确认你是谁

用户:发起登录请求 admin 123456

服务器:ok,登录成功

用户:我要看我cdsn有多少粉丝,发起请求

服务器:请告诉我你的名字和密码。

用户:?

旁白这就是http的无状态的特征,不会记得之前的请求内容,所以不会记得你已经登录过,这就是cookie的由来,每次http请求都会携带cookie中的内容

用户: 我已经将之后的http请求设置cookie为username:admin password,现在每次请求都会自动带上cookie里面的信息,发起请求

服务器:好的,用户admin,已经帮你跳转到对应页面

黑客:好啊,我只要拿到存在用户浏览器里面的cookie就能知道密码了。

旁白 存在浏览器端的cookie相较而言更容易被获取,不安全,于是有了session

session

旁白session就是会话的意思,将某些重要内容放在服务器端,保证安全性

用户: 发起登录请求

服务器: 我将你发过来的用户名和密码存在我这(session)了,给你一个sessionId,你放在cookie中

用户:cookie是存在浏览器端的,所以我能看到sessionId是什么,但是我不能看到我登录的密码了,这样好。现在我想要看粉丝数,发起http请求,http请求自带cookie,也就是sessionId

服务器: 我从sessionId找到了我之前存放的token,知道你是谁了,现在就给你对应的粉丝数量的信息。

黑客:我又来了,我获取到cookie里面的sessionId了,我可以伪装成你,但是我获取不到密码了, 密码在服务器那里。

很多用户: 我登录了。

服务器: 太多用户登录了,有点占用内存,而且有的用户很久都没有使用过了,存在我这太浪费了,所以我要设置一个时间,哪个session太久没有使用过了,就给清除掉。一直在使用session就一直存在。

用户:怎么速度变慢了

服务器: 查找session需要时间的。

旁白session的缺点就是占用服务器内存和查找时的损耗,而且被人拿到之后能够被人用很长一段时间

token

服务器: 不要再把登录状态存在我这了,我们用token吧

用户:登录!

服务器:将用户名和密码等加密,再加上截止时间,我的数字签名等,再加密成字符串,放在浏览器的cookie里面

用户:token已经存放在我的cookie里面了,发起请求

服务器:解密cookie中的token,我知道你是谁了。

黑客:我拿到cookie里的token了,但是很快就用不了了,它的截止时间不会随着你使用而变化,就算一直用也会失效。

https

用户:我的cookie这么好拿的?怎么这么不安全。

网站:基本上是拿不到的,而且技术太成熟了,比如https技术,现在用户你和服务器的通信都是加密的,就算黑客拿到也很难解密,更别说基本拿不到,除非我身上有明显漏洞。

用户:这么说其实我吧用户名存在cookie里面也没啥?

网站:只要我够完善,就很难在网络上获取,但是容易在网络之外获取,比如网吧里,而且被获取了后果很严重哦。

用户: 好吧,还是token好用。