当前位置:网站首页>Cookie和Session的关系
Cookie和Session的关系
2022-08-03 16:04:00 【Zhaohui_Zhang】
目录
Cookie和Session的意义——Cookie和Session都是用来跟踪浏览器用户身份的会话方式。
1. Cookie的工作原理
(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据区分不同的用户
Cookie的工作原理图:
2. Session的工作原理
(1)浏览器端第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIONID的固定值,value为session对象的ID),然后将该Cookie发送至浏览器端
(2)浏览器端发送第N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
(3)服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象,从而区分不同用户。
name为JSESSIONID的Cookie不存在(关闭或更换浏览器),返回1中重新去创建Session与特殊的Cookie
name为JSESSIONID的Cookie存在,根据value中的SessionId去寻找session对象
value为SessionId不存在**(Session对象默认存活30分钟)**,返回1中重新去创建Session与特殊的Cookie
value为SessionId存在,返回session对象
Session的工作原理图
3. cookie和session区别
cookie数据保存在客户端,session数据保存在服务端。
session:
简单的说,当你登陆一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。由于数据是存储在服务器上面,所以你不能伪造。
cookie
sessionid是服务器和客户端连接时候随机分配的,如果浏览器使用的是cookie,那么所有数据都保存在浏览器端,比如你登陆以后,服务器设置了cookie用户名,那么当你再次请求服务器的时候,浏览器会将用户名一块发送给服务器,这些变量有一定的特殊标记。服务器会解释为cookie变量,所以只要不关闭浏览器,那么cookie变量一直是有效的,所以能够保证长时间不掉线。
如果你能够截获某个用户的cookie变量,然后伪造一个数据包发送过去,那么服务器还是 认为你是合法的。所以,使用cookie被攻击的可能性比较大。
如果cookie设置了有效值,那么cookie会保存到客户端的硬盘上,下次在访问网站的时候,浏览器先检查有没有cookie,如果有的话,读取cookie,然后发送给服务器。
所以你在机器上面保存了某个论坛cookie,有效期是一年,如果有人入侵你的机器,将你的cookie拷走,放在他机器下面,那么他登陆该网站的时候就是用你的身份登陆的。当然,伪造的时候需要注意,直接copy cookie文件到 cookie目录,浏览器是不认的,他有一个index.dat文件,存储了 cookie文件的建立时间,以及是否有修改,所以你必须先要有该网站的 cookie文件,并且要从保证时间上骗过浏览器
两个都可以用来存私密的东西,session过期与否,取决于服务器的设定。cookie过期与否,可以在cookie生成的时候设置进去。
4. 总结
(1)Cookie数据存放在客户的浏览器上,Session数据放在服务器上
(2)Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,如果主要考虑到安全应当使用Session
(3)Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用Cookie
(4)单个Cookie在客户端的限制是3K,就是说一个站点在客户端存放的Cookie不能3K。
(5)所以:将登陆信息等重要信息存放为Session;其他信息如果需要保留,可以放在Cookie中
边栏推荐
- 面了个腾讯35k出来的,他让我见识到什么叫精通MySQL调优
- [Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 01
- Kubernetes 笔记 / 目录
- 泰山OFFICE技术讲座:文字边框高度研究
- 想进阿里?先来搞懂一下分布式事务
- 使用VS Code搭建ESP-IDF环境
- 全新探险者以40万的产品击穿豪华SUV价格壁垒
- 技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris
- 为教育插上数字化的翅膀,网易云信发布「互联网+教育」整体解决方案
- Common distributed theories (CAP, BASE) and consensus protocols (Gosssip, Raft)
猜你喜欢
【Unity入门计划】基本概念(6)-精灵渲染器 Sprite Renderer
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 02
Not to be ignored!Features and advantages of outdoor LED display
ffplay视频播放原理分析
Essentially a database data recovery 】 【 database cannot read data recovery case
Yii2安装遇到Loading composer repositories with package information
JS basics--judgment
2021年数据泄露成本报告解读
spark入门学习-1
甲方不让用开源【监控软件】?大不了我自己写一个
随机推荐
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
leetcode-693.交替位二进制数
opencv 读取和写入路径有汉字的处理方法
常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
How much do you know about the intelligent operation and maintenance service of data warehouse based on DMS?
深入浅出Flask PIN
CopyOnWriteArrayList详解
一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
Ruoyi Ruoyi framework @DataScope annotation use and some problems encountered
DataGrip:非常好用的数据库工具,安装与使用教程,亮点介绍
MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?
Some optional strategies and usage scenarios for PWA application Service Worker caching
[Code Hoof Set Novice Village 600 Questions] Define a function as a macro
【深度学习】今日bug(8月2)
TCP 可靠吗?为什么?
AI也有健忘症?英国41岁教授专访:解决灾难性遗忘
[Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 01
用友YonSuite与旺店通数据集成对接-技术篇2
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 02
【Unity入门计划】基本概念(7)-Input Manager&Input类