session、cookie和taken的区别
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的区别的更多相关文章
- POPTEST老李分享session,cookie的安全性以及区别 1
POPTEST老李分享session,cookie的安全性以及区别 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程 ...
- session,cookie,sessionStorage,localStorage的区别及应用场景
session,cookie,sessionStorage,localStorage的区别及应用场景 浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟 ...
- 缓存session,cookie,sessionStorage,localStorage的区别
https://www.cnblogs.com/cencenyue/p/7604651.html(copy) 浅谈session,cookie,sessionStorage,localStorage的 ...
- Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别
2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...
- Application,Session,Cookie,ViewState和Cache区别
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
- 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...
- session,cookie,sessionStorage,localStorage的区别
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...
- [转] 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...
- 彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_94 客户端状态保持是一个老生常谈的问题了,归根结底追踪浏览器的用户身份及其相关数据无非就是以下四种方式:session,cooki ...
- POPTEST老李分享session,cookie的安全性以及区别 3
如何查看服务器端输送到我们电脑中的这些Cookie信息: 点开IE浏览器或其他浏览器,在菜单栏中有工具选项,点开有InterNet选项: Cookie名称.来源.文件格式( ...
随机推荐
- HttpClient GET和POST请求
package com.rogue.hclient; import java.io.BufferedReader; import java.io.IOException; import java.io ...
- js - __proto__ 、 prototype和constructor
零.资料与前言 0x1 材料: 1.帮你彻底搞懂JS中的prototype.__proto__与constructor(图解) 0x2 前言 之前也尝试总结过 js 中的 __proto__ . pr ...
- drf中的jwt使用与手动签发效验
jwt认证 1)session存储token,需要数据库参与,耗服务器资源.低效 2)缓存存token,需要缓存参与,高效,不易集群 3)客户端存token,服务器存签发与交易token的算法,高效, ...
- 转:Zabbix-3.0.x使用OneAlert发送告警
转自: http://blog.sina.com.cn/s/blog_87113ac20102w7il.html ( 标签: onealert 分类: zab OneAlert 是国内首个 Saa ...
- hibernate需要注意的点
1.需要用Hibernate做实体的类(@Entity)需要在配置文件中配置对应的包(例如:spring/appContext-hibernate.xml). 2.hibernateTemplate中 ...
- SQLite数据库迁移MySQL(MariaDB)完整步骤
第一步(SQLite导出数据库): 命令方式导出数据库 > .output d:/data/lagou.sql //导出路径及文件名 > .dump //开始导出 修改lagou.sql文 ...
- jsPDF
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Starting php-fpm [18-Jun-2019 12:56:59] NOTICE: PHP message: PHP Warning: Version warning提示报错解决
php-fpm在命令行重启时出现如下提示信息在终端上,虽然不影响使用,但是不够干净利落,参考了一篇国外博客得以解决,参考链接:https://community.centminmod.com/thre ...
- Soldier and Badges
题目链接:https://vjudge.net/problem/CodeForces-546B AC代码: #include<iostream> #include<algorithm ...
- GoLand2019.03破解与汉化
1.准备工作 (请认真的做好准备工作,否则中途可能会操作失败.) GoLand是JetBrains公司发布的商业版的GO语言编辑器(收费的),本屌目前还没钱购买正版,所以本次教程是以Windows平台 ...