http是无状态的协议,所以要维持应用的会话形式,就需要加入以下几种机制,来进行会话跟踪,识别用户身份(当同一用户进行多次操作,不用反复请求建立新的连接,从而节省服务器资源和处理速度)

  生成位置 存储方式 验证原理 特点

cookie

(记录用户身份)

服务器

在客户端浏览器内以文件形式存储(键值对name=value)

常见包括name(cookie名称)、path(对于服务器其他页面的可用性)、domain(顾名思义,同域内的其他服务器共享可用性)、secure(该属性若未出现,这意味着cookie在网络中未加密传输;secure属性并不能对Cookie内容加密,因而不能保证绝对的安全性。如果需要高安全性,需要在程序中对Cookie内容加密、解密,以防泄密。)

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

2.服务器生成cookie(服务器针对客户端状态的一小段文本信息)并在响应头中返回

3.在之后的请求中携带cookie,服务器进行检查(如前所示,这些信息都可被篡改和截取)

1.安全性较差,攻击者可截取cookie进行目标权限的操作

2.需要浏览器支持

3.不可跨域

session

(记录用户状态)

服务器

服务器 redis数据库、file(php)、内存(tomcat)中。存储形式为hash(key-field-value);包括sessionid(为随机生成字符串)该id会写入cookie中发至客户端。

同时Session需要使用Cookie作为识别标志,因为Session不能依据HTTP连接来判断是否为同一客户

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

2.服务器生成session(包括sessionid、sessionid对应的key值)存储在服务器中,之后发送cookie(值为sessionid)在响应头中返回

3.在之后的请求中携带cookie(sessionid),服务器进行检查(根据sessionid来查找目标session,比对是否一致)

拓展性较差(若服务器存在负载均衡,session只存在了其中某台)
token 服务器

客户端、服务器(只保存未到期却注销的token,以便下次收到使用这个token时判其无效)

一般包括uid(用户唯一的身份表示)、time(时间戳)、sign(签名、密钥等)、URL(请求的路径)

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

2.服务器进行验证(用户合法性)

3.服务器签发一个签名的token(生成过程可参考对称加密)给客户端

4.客户端存储并在每次发送请求携带该token

5.服务器通过特定的加密算法对token进行过滤选择(比如HMAC)

6.校验通过返回增删改查数据;校验未通过返回错误码

1.无状态、可拓展(因为token并)

2.相对安全(可防止CSRF攻击)

3.可拓展性强(可分享权限给第三方应用)

4.多平台跨域(完全由应用管理)

5.基于标准化

假设一个场景,有一栋大楼有门禁。

cookie机制:只要你带通行证不管你是谁都可以进来,只认通信证,cookie在这里是通行证。

session机制:要报你的门牌号户主姓名电话号码,大楼门卫在信息表里找到对应的就会放行。session在这里是信息表里的门牌号户主姓名电话号码。

token机制:检验通行证,同时需要对暗号“天王盖地虎”---“宝塔镇河妖”,暗号错一个字都不行。token在这里就是通行证和暗号。

如有纰漏望不吝赐教!

session、cookie和taken的区别的更多相关文章

  1. POPTEST老李分享session,cookie的安全性以及区别 1

    POPTEST老李分享session,cookie的安全性以及区别   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程 ...

  2. session,cookie,sessionStorage,localStorage的区别及应用场景

    session,cookie,sessionStorage,localStorage的区别及应用场景 浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟 ...

  3. 缓存session,cookie,sessionStorage,localStorage的区别

    https://www.cnblogs.com/cencenyue/p/7604651.html(copy) 浅谈session,cookie,sessionStorage,localStorage的 ...

  4. Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别

    2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...

  5. Application,Session,Cookie,ViewState和Cache区别

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  6. 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景

    浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...

  7. session,cookie,sessionStorage,localStorage的区别

    浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...

  8. [转] 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景

    浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...

  9. 彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_94 客户端状态保持是一个老生常谈的问题了,归根结底追踪浏览器的用户身份及其相关数据无非就是以下四种方式:session,cooki ...

  10. POPTEST老李分享session,cookie的安全性以及区别 3

    如何查看服务器端输送到我们电脑中的这些Cookie信息:      点开IE浏览器或其他浏览器,在菜单栏中有工具选项,点开有InterNet选项:          Cookie名称.来源.文件格式( ...

随机推荐

  1. 详解Javascript中的原型与原型链

    目录 知识点 参考资料 结束语 知识点 面向对象编程 我们熟悉的Java和C#里,面向对象的两个基本概念是类class和实例instance,而ES6以前的Javascript并没有设计class. ...

  2. 科学家用AI看月球后,却发现了这些东西

    ​​人工智能(AI)几乎已经无所不在,我们生活的大多数方面都已经被它们渗透,随着AI在过去几年取得的令人震惊的进步,它在许多方面都可能帮助我们的生活变得更美好.近日,AI在月球上发现了近7000个未被 ...

  3. 转:Zabbix-3.0.x使用OneAlert发送告警

    转自: http://blog.sina.com.cn/s/blog_87113ac20102w7il.html   ( 标签: onealert 分类: zab OneAlert 是国内首个 Saa ...

  4. 修改 commit message

    本文为原创文章,转载请标明出处 目录 修改上一条提交的 commit message 修改之前提交的 commit message 1. 修改上一条提交的 commit message git com ...

  5. JAVAscript的DOM操作及实例

    一.Windows对象操作 (1)用代码打开窗口:window.open("第一部分","第二部分","第三部分","第四部分&q ...

  6. fastDFS 一二事 - 简易服务器搭建之--阿里云

    第一步:安装fastDFS依赖libevent工具包 yum -y install libevent 第二步:解压libfastcommon-1.0.7.tar.gz文件 tar -zvxf libf ...

  7. python socket实例

    1.客户端向服务端发送 #coding:utf-8 '''客户端''' import socket khd=socket.socket() #声明socket类型,同时生产socket连接对象 khd ...

  8. form组件及cookie和session

    多对多关系表的三种创建方式 1.全自动创建 优势:不需要你手动创建第三张表 不足:由于第三张表不是你手动创建的,也就意味着,第三张表字段是固定的无法更改 class Book(models.Model ...

  9. MySql之增删改查 · YbWork's Studio

    前提:在进行"增删改查"的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1."增"--添加数据 1.1 为表中 ...

  10. WEB端缓存机制

    WEB端缓存机制 什么是WEB缓存 Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本.缓存会根据进来的请求保存输出内容的副本:当下一个请 ...