Session和Cookie,你真的弄清了吗?

news2024/11/16 0:02:39

Session和Cookie

Session和Cookie

  • Session和Cookie
    • cookie
      • cookie的生命周期
      • cookie作用域
    • Session
      • session的生命周期
      • session作用域
    • cookie和session安全性

为什么需要cookie和session?在web系统发展变迁时,web发展时随着需求的不断增多,交互的存在必然会引起多步操作,引入session和cookie用于保存操作,也就是对一种状态的记录。从记录状态的角度来识别session和ccokie。就拿最简单的登录功能来解说,当我们访问一个网站时,如果在此之前我们曾经登录过,浏览器会自动帮我们填充账号和密码。而cookie和session记录的就是这一种状态,不需要我们自己去填写,浏览器会自动记录状态。

cookie

cookie的原理,cookie是客户端连接服务器的一种凭证,保存于客户端。相当于如果一个客户端收到了服务器发过来的cookie,就相当于保存了这个服务器的资料,在以cookie的生命周期内都会使用同一个cookie对服务器进行交互,而不用浪费更多的资源。

了解一下cookie的工作流程:

  1. 客户端(浏览器)发起HTTP请求。
  2. 服务器接收到请求会进行cookie设置,也就是set-cookie(键值对)。
  3. 客户端接收到相应收到cookie,而后每次与服务器进行交互时都会携带cookie。

接下来我们抓一个包:

在这里插入图片描述

此时的cookie已经设置好,在接下来进行交互时就会自带一个cookie。

cookie的生命周期

在客户端与服务器交互结束的时候也就是cookie完成自己使命走向终结的时刻。

不过在有些时候cookie的生命周期并不是只由这个决定,在客户端连接服务器时,服务器有时候会设置cookie的生命周期,从停止交互开始计算,超过设置的生命周期,cookie此时会失效。不过当客户端保存了cookie时,再去连接服务器也是可以存在的。相当于,自己本地保存了账号密码,然后进行自动填充。

总结有两个因素:

  1. 自身存活时间,当服务器set-cookie时进行设定
  2. 客户端是否保留了cookie

cookie作用域

cookie是保存客户端的一种状态机制,当浏览器访问服务器收到cookie时,会将cookie进行存储。

  • 单个字域名:cookie可以设置为单个字域名的所有页面共享

例如:将cookie设置为dream.com则所有以www.dream.comblog.dream.com开头的url页面都可以访问该cookie。

  • 单个路径下的多页面,cookie可以设置为单个url根目录的多个页面共享

例如:cookie设置为/root则所有以https://www.dream/root开头的url页面都可以访问该cookie

Session

session相比于cookie的安全性要高许多,session存储于服务器中,因为cookie的不安全因素才有了session。在前面我们已经了解了cookie的工作流程。也看见了cookie是什么。session就是在cookie的基础上再加一个sessionId

sessionId的作用就是让服务器更好的识别对方客户端的身份,而且这个sessionId如果一旦被修改,服务器可以立马察觉对方身份异常,断开连接,从而保护客户端的信息。

服务器存储session有两种方式

  • cookie:通过将唯一一个sessionId 存储于客户端的cookie中,服务器可以从多个请求来识别出用户。
  • Server-side session storage(服务器端会话存储):数据库方式,文件系统,缓存等方式,当用户认证以后,服务器创建sessionID与用户进行关联,任何需要保留的数据都会保存在服务器中的session存储。

这两种方法都提供了一个可靠的方法来跟踪和管理用户状态。

session的生命周期

服务器存储session时为了避免资源浪费,相对的也会设置session的存活时间,在服务器返回sessionId时设置其时间,当过期活就需要重新获取新的sessionID来进行客户端与服务器之间的交互。

虽然服务器对其时间进行设置,不过当客户机意外关闭或者自身断开连接时也会影响到session的生命,不过这个行为是对客户端自身保存的sessionId产生一定的影响,下一次连接,客户机丢失sessionId需要重新连接服务器,会再次发送一个HTTP请求。

总结一下:

  • 服务器保存session时设置的时间
  • 客户端进程是否关闭,对客户端自身的影响

session作用域

已知sesssion存储在服务器,对于浏览器(客户端)是不可见的服务器会为每一个用户分配一个唯一的sessionId,用于下次用户发来请求时进行session验证。

  • 单个用户的所有操作:session存储于服务器端,对单个用户的所有操作都有效,记录用户此时的状态。

例如:当用户在登陆时,服务器会为该用户创建一个session存储用户信息,以便后续使用,可以让用户跳过登录页面。

  • 不同的应用程序:session存储的数据对整个web程序都有效。

例如:你在当前购物车程序中使用了session存储数据,在接下来相应的网页中也许可以访问到这些数据。

cookie和session安全性

cookie存储于客户端,可见,可修改!

session存储于服务器,不可见,可修改不过一般修改后会导致服务器无法识别,所以这里就是一种不可修改的状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ceph:关于Ceph 集群中池管理的一些笔记

写在前面 准备考试,整理 Ceph 相关笔记博文内容涉及, Ceph 中的 两种 pool 介绍,创建操作管理池理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停…

java公益网站系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目wap

一、源码特点 java 公益网站系统是一套完善的java web wap信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

Ceph:关于Ceph 集群管理的一些笔记

写在前面 准备考试,整理ceph 相关笔记博文内容涉及,Ceph 管理工具 cephadm,ceph 编排器,Ceph CLI 和 Dashboard GUI 介绍理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守…

Android插件化框架-Shadow原理解析

作者:dennyz 1、前言 所谓插件化,是实现动态化的一种具体的技术手段。 对于移动端的App而言,无论是Android还是iOS,都存在一个共同的问题,那就是更新的周期较长。 当我们希望快速为App更新功能时,必须经…

Docker Desktop启动失败解决方案(亲侧出坑总结)

现在有些东西网上资料开始变少了。需要自己去总结。有些技术呢又因为分享变得门槛低。今天这个是关于windows下的docker desktop无法启动的问题集锦。卷吧。 背景:应业务需要所以需要在个人电脑上安装docker环境。desktop docker是官方标准的windows下安装工具。 …

6.7面向对象的多态

7. 面向对象特征三:多态性 概念 多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。 变…

副业变现:Midjourney绘画赚钱的6种方式

今年被称为AI元年,其中最火的两款AI工具非ChatGpt和Midjourney莫属。究其原因,无非两点:第一,它提高了生产力,之前需要两年完成的工作,使用ChatGpt两天就完成。 第二,它带来了副业收入&#xff…

短视频seo源代码部署步骤

一、 部署短视频SEO矩阵系统源代码,您需要遵循以下步骤: 准备服务器环境 首先,您需要准备一个服务器环境来托管源代码。您可以选择云服务器(例如AWS,阿里云等)或自己的私人服务器。 安装所需软件 在服务器…

Android系统Binder详解

Android系统启动篇 1,《android系统启动流程简介》 2,《android init进程启动流程》 3,《android zygote进程启动流程》 4,《Android SystemServer进程启动流程》 5,《android launcher启动流程》 6,…

visual studio编译c++问题处理

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2760 语法错误: 意外的令牌“标识符”,预期的令牌为“;” 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C7510 “string_view”: 类型 从属名称的使用必须…

RocketMQ_介绍以及基础入门

目录 一、什么是MQ 1、应用解耦 2、流量削峰 3、数据分发 二、MQ的优缺点 三、各种MQ产品的对比 四、RocketMQ快速入门(单机版本) 一、什么是MQ 在学习RocketMQ之前,我们先来了解什么是MQ,以及为什么要用MQ。MQ的英文全称是(Massage Q…

2023首届盘古石杯晋级赛复盘

晋级赛通排61,学生组39,折在大小写格式上的题太多了qaq 容器密码:usy1UN2Mmgram&^d?0E5r9myrk!cmJGr Android程序分析 1.涉案应用刷刷樂的签名序列号是(答案格式:123ca12a)(★☆☆☆☆) 11fcf899 雷电APP跑的时候前面加…

LeetCode 2481. 分割圆的最少切割次数

【LetMeFly】2481.分割圆的最少切割次数 力扣题目链接:https://leetcode.cn/problems/minimum-cuts-to-divide-a-circle/ 圆内一个 有效切割 ,符合以下二者之一: 该切割是两个端点在圆上的线段,且该线段经过圆心。该切割是一端…

【Flutter】Flutter 如何使用 flutter_swiper

文章目录 一、前言二、flutter_swiper 的概念三、Flutter 中的 flutter_swiper1. 使用的库2. 方法介绍 四、代码示例1. 简单示例2. 完整示例 五、总结 一、前言 在移动应用开发中,轮播图是一种常见的 UI 元素,它可以用来展示一系列的图片或者内容。在 F…

ACL 2023 | 利用思维链(CoT)推理隐式情感,狂涨50%

©PaperWeekly 原创 作者 | 费豪 单位 | 新加坡国立大学 题目: Reasoning Implicit Sentiment with Chain-of-Thought Prompting 作者: 费豪,李波波,刘乾,邴立东⁴,李霏,Chua Tat-Seng 新加…

聚观早报|青年失业率处在高位;滴滴租车在全国300个城市上线服务

今日要闻:青年失业率处在高位;滴滴租车在全国300个城市上线服务;特斯拉提供三个月免费充电服务;苹果新专利Apple Watch;甲骨文宣布裁员数百人 青年失业率处在高位 6 月 15 日,国新办举行 5 月份国民经济运…

signoz调研部署及log收集体验

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 最近一直在调研监控、log收集,tracing相关的开源项目,以便使用。 前段时间一直调研使用的是skywalking。后来发现在log收集存储这一…

Ubuntu18编译内核源码,并调整版本号

​ 目标 下载ubuntu18 4.15.0-20-generic内核源码,默认情况下编译的内核版本会是4.15.17,我们需要调整版本号跟系统默认的一致,即4.15.0-20-generic 1 下载内核源码 sudo apt install linux-source-4.15.0 默认情况下,上面的…

苹果iOS 17新功能:iPhone激活Apple Watch铃声反向查找手表

苹果 Apple Watch 此前一直有查找 iPhone 的功能,用户可以点击表盘的电话图标(或者长按)来激活 iPhone 的铃声,从而找到附近的 iPhone 手机。 在最新的 iOS 17 测试版本中,苹果为 iPhone 也添加了这一功能的反向版本&a…

STM32速成笔记—串口通信

文章目录 一、什么是串口通讯二、串口通讯有什么用三、STM32的串口通信四、串口通信相关概念4.1 波特率4.2 全双工和半双工4.3 同步通信和异步通信 五、硬件连接六、串口通讯程序配置6.1 使能串口时钟和GPIO时钟6.2 初始化GPIO6.3 初始化串口参数6.4 使能串口6.5 串口接收中断6…