session、cookie、token区别

一、cookie和session的区别

    1、作用范围不同,Cookie是运行在客户端,Session是运行在服务器端。  

    2、存储大小不同,Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。

    3、 安全性不同,通过拦截或本地文件找得到你的cookie后可以进行攻击。Session 存储在服务端,安全性相对 Cookie 要好一些。

    4、有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。


二.Session与Token的区别

1.token和session都是为了身份验证,Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息。而 Token 是令牌,访问资源接口时所需要的资源凭证。Token 使服务端无状态化,不会存储会话信息。

2..身份认证 token安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全。

3.Token 提供的是认证和授权 ,认证是针对用户,授权是针对 App 。其目的是让某 App 有权利访问某用户的信息。这里的 Token 是唯一的。不可以转移到其它 App上,也不可以转到其它用户上。Session 只提供一种简单的认证,即只要有此 SessionID ,即认为有此 User 的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方 App。所以简单来说:如果你的用户数据可能需要和第三方共享,或者允许第三方调用 API 接口,用 Token 。如果永远只是自己的网站,自己的 App,用什么就无所谓了。移动端对 cookie 的支持不是很好,而 session 需要基于 cookie 实现,所以移动端常用的是 token

4.时间与空间的博弈:session是空间换时间,而token是时间换空间。


扩展原理

cookie原理:浏览器第一次访问服务端时,服务器创建一个独特的身份标识数据,格式为key=value,放入到Set-Cookie字段里,随着响应报文发给浏览器。浏览器看到有Set-Cookie字段以后就知道这是服务器给的身份标识,于是就保存起来,下次请求时会自动将此key=value值放入到Cookie字段中发给服务端。服务端收到请求报文后,发现Cookie字段中有值,就能根据此值识别用户的身份然后提供个性化的服务

Session原理:Session是将要验证的信息存储在服务端,并以SessionId和数据进行对应,SessionId由客户端的cookie存储,在请求时将SessionId也带过去,因此实现了状态的对应。

token原理如图:客户端发送user id给服务器,然后服务器生成一个token返回给客户端,客户端请求时在请求头里带上token,这样服务器就去检验token,检验通过,就返回请求数据。

token保存在客户端上,这样不占用服务器资源。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容