Cookies与Session

news2024/11/15 15:35:02

在这里插入图片描述

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要: 各位小伙伴们大家好呀!今天带来的是cookie和session的讲解,希望大家喜欢!


🤟每日一言: 永远年轻,永远热泪盈眶!

目录

  • 前言
  • Cookies
  • Cookies 的工作流程
  • Sessions
  • Sessions 的工作流程:
  • Cookies 和 Sessions 的区别
  • 总结
  • 写在最后的话


前言

  因为 HTTP 是无状态的,所以为了将一个请求与其他请求相关联,需要一种在 HTTP 请求之间存储用户数据(保持应用程序状态)的方法。Cookies 和 Sessions 都是在浏览器发出的不同请求之间保持应用程序状态的方法。


Cookies

  Cookies 是保存在客户端(如浏览器)的一小段数据(最大 4 KB 长),以键值对的形式保存数据:

name=value; name2=value2

  这些数据可以在客户端进行设置,也可以通过服务器使用 HTTP 头进行设置。例如使用 HTTP 头设置 Cookies 到期时间:

Set-Cookie: name2=value2; Expires=Wed, 19 May 2023 10:18:14 GMT

  这会让浏览器设置一个名为 name2 的 Cookie,其值为 value2,将在大约 2 年后过期。


Cookies 的工作流程

1.客户端→服务器:HTTP 请求
2.服务器→客户端:HTTP 响应 + Set Cookies
3.客户端→服务器:HTTP 请求 + Cookies
4.服务器→客户端:HTTP 响应

  Cookies 通常用于保留登录状态,即从浏览器发送用户名和特殊哈希,服务器根据数据库对其进行检查以允许访问。Cookies 也经常用于 Sessions 创建。

  然而,存储在 Cookies 中的数据被认为是不安全的,因为它以任何人都能看到的文本格式保存在客户端,用户可以轻易修改其内容。当然,Cookies 中也有一些安全属性:

1.HttpOnly:值为 true 或 false,若设置为 true,则不允许通过 JS 脚本 document.cookie 去更改这个值,同样这个值在 document.cookie 中也不可见,这样能有效的防止 XSS 攻击,但在发送请求时依旧会携带此 Cookie

2.Secure:默认为空使用 HTTP。若设置为 true,则浏览器只会在 HTTPS 中传输此 Cookie,不会在不安全的 HTTP 协议中传输此 Cookie


Sessions

  上述 Cookies 以及 URL 参数
(例如http://example.com/mypage?d=lol&boo=no)是在多个请求之间传输数据的合适方法。但是,如果希望数据不被客户端读取 / 编辑【为了安全】,它们就不能满足需求。
  解决方案是将该数据存储在服务器端,并给它一个 ID ,只让客户端知道该 ID 并在每次 HTTP 请求时携带该 ID。

  于是就有了 Sessions。Sessions 将数据暂时保存在服务器上(无大小限制),每个用户都获得一个 Session ID, 该 ID 通过 Cookies 或 GET 请求发送回服务器进行验证。


Sessions 的工作流程:

1.客户端→服务器(请求一):登录认证
2.服务器→客户端:鉴权成功后返回 HTTP 响应 + Set Cookies【包含 Session ID】
3.客户端→服务器(请求二):查看个人信息 + Cookies【包含 Session ID】
4.服务器→客户端:取出 Session ID 判断具体用户

  Sessions 通常是短暂的,这使得它们非常适合在应用程序之间保存临时状态。用户关闭浏览器或注销时,Sessions 也会过期。

  Sessions 被认为比 Cookies 更安全,因为数据本身保存在服务器上。


Cookies 和 Sessions 的区别

\CookieSession
存储方式Cookie 存储在客户端,方便与 JS 交互,方便获取用户信息Session 存储在服务端,高效、安全,不依赖浏览器环境
存储类型Cookie 只能存储 ASCII 码 字符串Session 可以存储任意数据类型
存储大小Cookie 大小有限制(4KB),同一域名下的数量也有限制(20 个)Session 没有类似的限制(128MB)【可能脚本内存限制 128 MB】
生命周期Cookie 可设置为长时间保持,比如经常使用的默认登录功能Session 一般失效时间较短,客户端关闭(默认情况下)或者 Session 超时都会失效
安全性Cookie 是本地存储,不够安全,别人可以分析存放在本地的 Cookie 并进行欺骗,存在 CSRF 风险\
特点Cookie 是客户端存储用户信息的一种机制,用来记录用户的一些信息,也是实现 Session 的一种方式【通行证】Session 是在服务端存储的一个数据结构,用来跟踪用户的状态,这个数据可以保存在内存、文件、数据库中【客户明细表】

总结

  Cookies 和 Sessions 都是为了在无状态的 HTTP 协议之上维护会话状态,使得服务端可以知道当前是和哪个客户在“打交道”
Sessions ID 是客户端的唯一标识,通常存储在 Cookies 中【浏览器禁用 Cookies 时可以放在 URL 参数中】,它是维持一个会话的核心
  现在大多都是 Sessions + Cookies同时使用,虽然只用 Sessions 不用 Cookies,或是只用 Cookies 不用Sessions 在理论上都可以保持会话状态,但通常不会单独使用


写在最后的话

  本文花费大量时间介绍了Cookies与Session,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

在这里插入图片描述

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{9c81c1}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{ed7976}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{98c091}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

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

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

相关文章

JavaScript基础六、函数

零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…

Deploy Workshop|DIY部署环境,让OceanBase跑起来

2023 年 3 月 25 日,我们将在北京开启首次 OceanBase 开发者大会,与开发者共同探讨单机分布式、云原生、HTAP 等数据库前沿趋势,分享全新的产品 Roadmap,交流场景探索和最佳实践,此外,OceanBase 开源技术全…

Qt多线程文件查找器

⭐️我叫恒心,一名喜欢书写博客的研究生在读生。 原创不易~转载麻烦注明出处,并告知作者,谢谢!!! 这是一篇近期会不断更新的博客欧~~~ 有什么问题的小伙伴 欢迎留言提问欧。 Qt多线程文件查找器 前言 最近…

JUC并发编程——wait-notify

目录一、wait / notify1.1 wait / notify 原理1.2 wait / notify API介绍二、wait VS sleep三、wait / notify —代码改进一、wait / notify 1.1 wait / notify 原理 ● Owner线程发现条件不满足,调用wait( )方法即可进入WaitSet变为 WAITING状态 ● BLOCKED 和 W…

AI的简单介绍

什么是AI? AI 是 Artificial Intelligent 的缩写,是我们通常意义上说的人工智能。 简单来说就是让机器能够模拟人类的思维能力,让它能够像人一样感知、思考甚至决策。 为什么要开发AI? 因为在过去,都是我们学习机器…

408 计算机基础复试笔记 —— 更新中

计算机组成原理 计算机系统概述 问题一、冯诺依曼机基本思想 存储程序:程序和数据都存储在同一个内存中,计算机可以根据指令集执行存储在内存中的程序。这使得程序具有高度灵活性和可重用性。指令流水线:将指令分成若干阶段,每…

opencv学习(一)图像的基本操作

数据的读取cv2.IMREAD_COLOR:彩色图像cv2.IMREAD_GRAYSCALE:灰度图像import cv2 img cv2.imread(E:/opencv/open-cv/2-7/cat.jpg,1)cv2.imshow("img", img) cv2.waitKey(0) cv2.destroyAllWindows() cv2.imread()读取图片,当括号里面是1时&#xff…

华为OD机试题,用 Java 解【水仙花数】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

抓包技术(浏览器APP小程序PC应用)

P1 抓包工具 01. Fidder 首先第一个Fiddler它的优势,独立运行,第二个支持移动设备(是否能抓移动APP的包,)在这一块的话wireshark、httpwatch就不支持,因此在这一块就可以排除掉前连个,因为我们…

SpringCloudGateway--基于redis实现令牌桶算法

目录 一、限流算法 1、计数器算法 2、漏桶算法 3、令牌桶算法 二、Gateway中的限流 一、限流算法 1、计数器算法 计数器算法是指从第一个请求开始,每多一个请求就加1,假设设置每秒限流100,当在一秒钟前500ms已经达到100,后面的5…

华为云计算HCIA学习笔记-第1章 云计算基础概念

1.1 云计算课程安排说明 (IA-虚拟化-FC / IP-Linux OpenStack 桌面云/IE-备份容灾迁移) 1.2 为什么云计算IA讲虚拟化? 提前告知学员,为什么IA课程要重点讲解虚拟化?云计算基于OpenStack,其底层虚拟化技术…

赞!中原银行|古风金融产品体验运营数字驾驶舱大屏!

本期「V友故事」:中原银行设计师作品——古风金融产品体验运营大屏 金融行业数字化转型是近年来提出的一个关键词,它不仅在改变金融服务的结构、形式和方式,而且也在影响中国金融行业的扩张规模,基于此行业趋势,金融从…

加密图像的脆弱水印及应用

原文题目:《A self-embedding secure fragile watermarking scheme with high quality recovery》 学习笔记: 应用场景 为了确保图像在传输过程中不被损坏,在将原始图像发送到云端之前,将用于篡改检测和恢复的水印嵌入到原始图像…

docker逃逸复现--pid=host模式下的逃逸

漏洞原理当docker以--pidhost模式启动时,你可以通过在容器进程中注入一些shellcode进行逃逸。相当于给了docker Linux中的CAP_SYS_PTRACE权限--pidhost:意味着宿主机与容器公享一套pid,如此做容器就可以访问并跟踪宿主机的进程Linux中的CAP_S…

【微信小程序】-- 页面导航 -- 导航传参(二十四)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

MyBatis框架快速入门 - 基本使用

文章目录MyBatisMyBatis基本介绍MyBaits快速入门Mapper代理开发MyBatis配置文件MyBatis MyBatis基本介绍 什么是MyBatis? MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software found…

FPGA实现模拟视频BT656解码 TW2867四路PAL采集拼接显示 提供工程源码和技术支持

目录1、前言2、模拟视频概述3、模拟视频颜色空间4、逐行与隔行5、BT656数据与解码BT656数据格式BT656数据解码6、TW2867芯片解读与配置TW2867芯片解读TW2867芯片配置TW2867时序分析7、设计思路与框架8、vivado工程详解9、上板调试验证10、福利:工程代码的获取1、前言…

【Spring6】| GoF之工厂模式

目录 一:GoF之工厂模式 1. 工厂模式的三种形态 2. 简单工厂模式 3. 工厂方法模式 4. 抽象工厂模式(了解) 一:GoF之工厂模式 (1)GoF(Gang of Four),中文名——四人组…

前端开发总结的一些技巧和实用方法(2)

本文主要介绍一些JS中用到的小技巧和实用方法,可以在日常Coding中提升幸福度,也可以通过一些小细节来增加代码可读性,让代码看起来更加优雅,后续将不断更新1.数组 map 的方法 (不使用Array.Map) Array.from 还可以接受第二个参数…

一文讲解JDK自带监控工具查看 JVM 情况

在一文带你了解阿里的开源Java诊断工具 :Arthas_出世&入世的博客-CSDN博客这篇文章中介绍了Arthas的强大功能,但是有些生成环境没有安装,所以还是需要会使用JDK 自带监控JVM的工具。 常用的JDK 自带监控工具如下: jps&#x…