session

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

cookie

cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL连接时才发送到服务器(https))。下面是一个简单的js使用cookie的例子:

用户登录时产生cookie:

document.cookie = "id="+result.data['id']+"; path=/";

document.cookie = "name="+result.data['name']+"; path=/";

document.cookie = "avatar="+result.data['avatar']+"; path=/";

使用到cookie时做如下解析:

var cookie = document.cookie;var cookieArr = cookie.split(";");var user_info = {};for(var i = 0; i < cookieArr.length; i++) {

user_info[cookieArr[i].split("=")[0]] = cookieArr[i].split("=")[1];

}

$('#user_name').text(user_info[' name']);

$('#user_avatar').attr("src", user_info[' avatar']);

$('#user_id').val(user_info[' id']);

token

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

cookie 和session的区别

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

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

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

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

5、所以个人建议:
   将登陆信息等重要信息存放为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上,也不可以转到其它 用户 上。 转过来说Session 。Session只提供一种简单的认证,即有此 SID,即认为有此 User的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方App。 所以简单来说,如果你的用户数据可能需要和第三方共享,或者允许第三方调用 API 接口,用 Token 。如果永远只是自己的网站,自己的 App,用什么就无所谓了。

token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。

转载于:https://www.cnblogs.com/hackerbird/p/8979273.html

session 、cookie、token的区别相关推荐

  1. Cookie和Session和Token的区别联系

    目录 发展史 2 Cookie 3 Session 3.1 cookie和session的区别 4 Token 4.1 传统方式--基于服务器的验证 4.2 基于服务器验证方式暴露的一些问题 4.3 ...

  2. Session/Cookie/Token还傻傻分不清?

    Cookie.Session.Token 傻傻分不清 Session/Cookie/Token 还傻傻分不清? 相信项目中用JWT Token的应该不在少数,但是发现网上很多文章对 token 的介绍 ...

  3. cookie、session、token的区别和相似点,JWT和数字签名以及签名证书的了解

    cookie.session.token分别是什么?有啥区别呢? 为什么需要cookie.session.token呢? 首先,要思考的是为啥有这三个东西,因为HTTP协议是无状态的特性导致的,什么是 ...

  4. UNIAPP day_05(9.3) Cookie、WebStorage、Session 和 Token的区别、uni-app最终部署

    列表页"编写公式: data -- kw:"".list:[ ].pno:0.pageCount:99999.isLoading:falseloadNextPageDat ...

  5. cookie、session、Token究竟区别在哪?如何进行身份认证,保持用户登录状态?

    HTTP是无状态的,也就是说你这次访问了服务器,关闭网页,再次访问服务器,服务器是没有意识到又是你来访问,那怎么保持登录状态呢? 设置让用户可以选择记住用户名和密码,但是把密码交给浏览器,如果电脑被黑 ...

  6. session和token的区别

    session的使用方式是客户端cookie里存id,服务端session存用户数据,客户端访问服务端的时候,根据id找用户数据 而token一般翻译成令牌,一般是用于验证表明身份的数据或是别的口令数 ...

  7. Cookies 、 Session 和 token 的区别

    这篇文章写的 Cookies 和 Session的区别 比较详细,也很好理解,可以学习下:https://blog.csdn.net/axin66ok/article/details/6175522 ...

  8. 分布式系统中使用分布式session和token的区别

    一.分布式session 因为是分布式的系统,传统的单机session不适用于分布式系统中,可以使用分布式session. 本质是使用第三方的数据库(建议是非关系型数据库)来存储session信息,例 ...

  9. session与token的区别

    验证的两种机制而已,没有优劣之分,适用于不同的业务而已

  10. vue从url中获取token并加入到 请求头里_BATJ都会用到的接口鉴权cookie、session 和token...

    鉴权 鉴权是指验证用户是否拥有访问系统的权利-鉴定权限. cookie.session和token 为什么会有cookie.session和token? 1. http是无状态协议 什么是无状态呢? ...

最新文章

  1. python 正则表达式 截取特定字符串之后的全部内容
  2. 某程序员面试支付宝P7,面试已通过,却因为背调没过!再进阿里失败!阿里背调,到底调啥?...
  3. python迅雷远程下载页面_【教程】Chrome浏览器添加迅雷下载支持
  4. 更改Firefox为中文界面(Ubuntu系统)
  5. android串口通讯奇偶校验,串口通讯奇偶数校验及CRC校验如何使用详解
  6. maven安装_如何从官网下载Maven与安装Maven
  7. myisam和innodb
  8. 子类覆盖父类(Java)
  9. [新功能]Blog首页仅列出标题
  10. .NET中的内存管理,GC机制,内存释放过程
  11. 【汇编优化】之X86汇编优化
  12. .Net ViewState的实现(转载)
  13. zynq阅读文档之通过中断读GPIO输入的编程指导
  14. linux下搭建python机器学习环境
  15. HDU - 2586 - How far away ? (最短路)
  16. Ubuntu14.04安装GNOME3桌面
  17. [论文阅读] SASA: Semantics-Augmented Set Abstraction for Point-based 3D Object Detection
  18. excel筛选中文或者筛选数字
  19. 1375. 二进制字符串前缀一致的次数-前序遍历法
  20. 库存出入库管理业务流程图怎么做?

热门文章

  1. Media Player Classic - HC 源代码分析 4:核心类 (CMainFrame)(3)
  2. JavaBean 与 EJB 的区别
  3. android调webview的方法,Android中的WebView详解
  4. css将空的div撑开,如何使用css将空的浮动div伸展到可用的全高度?
  5. MySQL命令行格式化输出
  6. Visual Studio 2019下用 C# 实现 Hill2 二阶希尔密码 的加密、解密 GUI界面
  7. 【NOIP2018】【Luogu5019】铺设道路(贪心,差分)
  8. 【JSOI2008】【bzoj1012】最大数maxnumber
  9. birt预览能有内容发布后没内容_VS Code 1.52 发布!
  10. java 解析二进制_Java二进制指令代码解析