您的位置:首页 > 其它

Token、Cookie、Session的认识了解

2017-05-12 09:18 375 查看
token

token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。

基于Token的身份验证的过程如下:

用户通过用户名和密码发送请求。

程序验证。

程序返回一个签名的token 给客户端。

客户端储存token,并且每次用于每次发送请求。

服务端验证token并返回数据。

每一次请求都需要token。token 应该在 HTTP 的头部发送从而保证Http请求无状态。我们同样通过设置服务器属性 Access-Control-Allow-Origin:* ,让服务器能接受到来自所有域的请求。

需要注意的是,在ACAO头部标明(designating)*时,不得带有像HTTP认证,客户端SSL证书和cookies的证书。

注: 基于令牌能够使用 AJAX 调用服务器,在任何域名下你都可以使用HTTP header头部来传输用户信息。

cookie

cookie是保存在本地终端的数据。由服务器生成,发送给浏览器,浏览器把 cookie 以 k-v 形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该 cookie 发送给服务器。

由于 cookie 是存在客户端上的,所以浏览器加入了一些限制确保 cookie 不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

session

session即“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。

NoSession意味着你的程序可以根据需要去增减机器,而不用去担心用户是否登录。

cookie 和session的区别

cookie 数据存放在客户的浏览器上,session 数据放在服务器上。

cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行cookie 欺骗,考虑到安全应当使用session。

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用 cookie。

单个 cookie 保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个 cookie。

所以建议: 将登陆信息等重要信息存放为 session, 其他信息如果需要保留,可以放在 cookie 中.

token 和session 的区别

session 和 oauth token 并不矛盾,作为身份认证 token 安全性比session 好,因为每个请求都有签名还能防止监听以及重放攻击,而session 就必须靠链路层来保障通讯安全了。如上所说,如果你需要实现有状态的会话,仍然可以增加 session 来在服务器端保存一些状态.

App通常用 restful api 跟 server 打交道。Rest 是 stateless 的,也就是app不需要像 browser 那样用 cookie 来保存 session, 因此用 session token 来标示自己就够了,session/state 由 api server 的逻辑处理。 如果你的后端不是 stateless 的 rest api, 那么你可能需要在app里保存session . 可以在app里嵌入 webkit, 用一个隐藏的 browser 来管理cookie session.

Session 是一种 http 存储机制,目的是为无状态的 http 提供的持久机制。所谓 Session 认证只是简单的把 User 信息存储到 Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而 Token ,如果指的是OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App 。其目的是让 某App有权利访问 某用户 的信息。这里的 Token是唯一的。不可以转移到其它 App上,也不可以转到其它用户上。

token 就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;

cookie 就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;

session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.

Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: