cookie、session、Token的简介与用处

token

Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

访问资源接口(API)时所需要的资源凭证,
简单 token 的组成: uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串)。

cookie:一种进行请求间数据传递的会话跟踪技术

cookie是1993年网景公司前雇员发明的一种进行网络会话状态跟踪的技术。会话是由一组请求与响应组成的。请求和响应之间必定有数据传递,即需要进行会话状态跟踪的。然而,http协议是一种无状态协议,在不同的请求中无法进行数据请求。

cookie由服务器生成,保存在客户端(浏览器)的信息载体,这个载体中存放着该站点的会话状态信息,只要cookie没有清空,那么保存的会话状态就有效。

用户在提交第一次请求时,由服务器生成cookie,并将其封装到响应头中,以响应的形式发送到客户端。而客户端接收到该响应后,将cookie保存在客户端。当客户端再次发送同类请求时,请求中会携带cookie。

cookie由若干键值对组成。

session:存储在服务端

如果将用户账号的一些信息都存到cookie中,一旦信息被拦截,可能出现信息泄露,这就出现了session,在一次会话中,只保存重要信息到session中,浏览器只记录sessionId。
服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。 这种用户信息存储方式相对cookie来说更安全

Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息。而 Token 是令牌,访问资源接口(API)时所需要的资源凭证。Token 使服务端无状态化,不会存储会话信息。只要有此 SessionID ,即认为有此 User 的全部权利

综上:

  • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
  • 作为身份认证,token安全行比session好;
  • Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而Token ,如果指的是OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App 。其目的是让 某App有权利访问某用户的信息。
  • Cookie是不允许垮域访问的,但是token是支持的, 前提是传输的用户认证信息通过HTTP头传输。

猜你喜欢

转载自blog.csdn.net/ljyahaha/article/details/114213947
今日推荐