HTTP cookie与session

telnet命令

telnet 是一个网络协议,用于通过 TCP/IP 网络进行远程登录到服务器。它允许用户在本地计算机上通过网络连接到远程服务器,并在服务器上执行命令

telnet [主机名或IP地址] [端口号]//连接服务器
  • telnet 会话中,Ctrl+] 会将你从当前会话切换到 telnet 的命令模式,你可以在这里输入命令。Ctrl+T 可以显示当前的连接状态。

HTTP是无连接,无状态的,就是每次访问一个服务器,都要发送请求,接收请求响应,而cookie和session是两种常用的客户端与服务端之间保持状态的技术

cookie

定义

HTTP Cookie是服务器发送到用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发送请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态、记录用户偏好等.

工作原理

  1. 当用户第一次访问网站时,服务器会在响应的 HTTP 头中设置 Set-Cookie字段,用于发送 Cookie 到用户的浏览器。

  2. 浏览器在接收到 Cookie 后,会将其保存在本地(通常是按照域名进行存储)

  3. 在之后的请求中,浏览器会自动在 HTTP 请求头中携带 Cookie 字段,将之前保存的 Cookie 信息发送给服务器。

QQ_1735740701471

分类

  • 会话 Cookie(Session Cookie):在浏览器关闭时失效。

  • 持久 Cookie(Persistent Cookie):带有明确的过期日期或持续时间,可以跨多个浏览器会话存在。

  • 如果 cookie 是一个持久性的 cookie,那么它其实就是浏览器相关的,特定目录下的一个文件。

cookie的基本格式

  • HTTP存在一个报头选项:Set-Cookie,可以用来进行给浏览器设置Cookie值。

  • 在HTTP响应头中添加,客户端获取并自行设置并保存Cookie

Set-Cookie:<name>=<value>
//其中<name>是Cookie的名称,<value>是Cookie的值//完整的Set-Cookie示例
Set-Cookie: username=peter; expires=Thu, 18 Dec 2024 12:00:00 UTC; path=/; domain=.example.com; secure; HttpOnly
属性描述
usernamepeter这是 Cookie 的名称和值,标识用户
expiresThu, 18 Dec 2024 12:00:00 UTC指定Cookie的过期时间
path/a/b定义Cookie的作用范围
domain.example.com指定哪些域名可以接收这个Cookie
secure指示 Cookie 只能通过 HTTPS 协议发送增加安全性。
HttpOnly阻止客户端脚本访问,防止脚本攻击

时间格式必须遵守RFC1123标准,具体格式样例:Tue, 01 Jan 2030 12:34:56 GMT 或者 UTC(推荐)。

CMT和UTC的区别

GMT(格林尼治平均时间)和UTC(协调世界时)是两种时间标准,它们在大多数情况下是等同的,但它们的定义和用途有所不同:

  1. 定义

  • GMT:格林尼治平均时间(Greenwich Mean Time)是一种时间标准,基于地球的自转,以英国伦敦郊区的格林尼治天文台为基准。GMT是本地时间,不考虑夏令时(Daylight Saving Time, DST)的影响。

  • UTC:协调世界时(Coordinated Universal Time)是一种时间标准,基于原子时(国际原子时,TAI)和地球自转时间的结合。UTC通过在原子时中添加或减去闰秒来保持与地球自转时间的一致性。

  1. 用途

  • GMT:最初用于航海和天文观测,现在主要用于定义其他时区相对于格林尼治的标准时间。

  • UTC:作为全球统一的时间标准,广泛用于国际时间同步、全球定位系统(GPS)、互联网和航空等领域。

  1. 夏令时

  • GMT:不涉及夏令时的调整,全年保持不变。

  • UTC:也不涉及夏令时的调整,全年保持不变。

  1. 历史和变迁

  • 在1960年代之前,GMT和UTC是相同的。但随着原子时的引入,UTC被定义为更精确的时间标准,以适应现代科技的需求。从那时起,UTC成为了全球时间同步的标准,而GMT则更多地被用作地理和历史参考。

  1. 实际应用

  • 在大多数情况下,GMT和UTC是等效的,因为它们的时间差通常不超过0.9秒。但在理论上,由于地球自转速度的不均匀性,GMT和UTC之间可能会有微小的差异。

  1. 闰秒

  • UTC:为了保持UTC与地球自转同步,会在必要的时候添加闰秒。这是UTC与GMT的主要区别之一,因为GMT不考虑闰秒。

  • GMT:不添加闰秒,完全基于地球自转。

总结来说,GMT和UTC在实际应用中几乎相同,但UTC是更精确的时间标准,考虑了闰秒的调整,而GMT则更多地用于地理和历史参考。

注意事项

  • 每个Cookie属性之间用分号 " ; " 连接和空格 " " 分割。

  • 名称和值之间使用等号 = 分隔

  • 如果 Cookie 的名称或值包含特殊字符(如空格、分号、逗号等),则需要进行 URL 编码。

单独使用Cookie有什么问题?

本质问题是这些私密数据在浏览器端保存,非常容易被人盗取,私密数据容易泄露

HTTP Session

HTTP Session是服务器用来跟踪用户与服务器交互期间用户状态的机制。由于HTTP协议是无状态的(每个请求都是独立的),因此服务器需要通过Session来记住用户的信息。

工作原理

当用户首次访问网站时,服务器会为用户创建一个唯一的Session ID,并通过Cookie将其发送到客户端,客户端会在之后的请求中携带这个Session ID,服务器通过Session ID 来识别用户,从而获取用户的会话信息。服务器通常会把Session ID 信息储存在内存,数据库或缓存中。

QQ_1735741075835

安全性

与 Cookie 相似,由于 Session ID 是在客户端和服务器之间传递的,因此也存在被窃取的风险。但是一般虽然 Cookie 被盗取了,但是用户只泄漏了一个 Session ID,私密信息暂时没有被泄露的风险。Session ID 便于服务端进行客户端有效性的管理,比如异地登录,可以通过 HTTPS 和设置合适的 Cookie 属性(如 HttpOnly 和 Secure)来增强安全性。

超时和失效

Session 可以设置超时时间,当超过这个时间后,Session 会自动失效。服务器也可以主动使 Session 失效,例如当用户登出时

总结

HTTP Cookie 和Session 都是用于在Web应用中跟踪用户状态的机制。Cookie是存储在客户端的,Session是储存在服务器端的

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

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

相关文章

【新年特辑】使用 React + TypeScript 开发新年祝福网页

&#x1f389; 新年将至&#xff0c;我决定开发一个独特的新年祝福网页&#xff0c;让每个人都能创建和分享自己的新年祝福。本文将详细介绍这个项目的开发过程&#xff0c;从技术选型到具体实现&#xff0c;希望能给大家一些启发。 一、项目概述 1.1 项目背景 在这个数字化的…

jmeter分布式启动

https://www.cnblogs.com/qtclm/p/11082081.html 1、代理机&#xff1a;输入“ipconfig”&#xff0c;找到IP地址&#xff0c;在Jmeter/bin/jmeter.properties设置remote host 启动jmeter server 1、控制机&#xff1a;输入“ipconfig”&#xff0c;找到IP地址&#xff0c;在J…

sqoop将MySQL数据导入hive

使用脚本加载数据 MySQL有一张表 hive创建一张相同的表 编写脚本同步数据 [rootmaster sqoop]# vim stu.sh#!/bin/bash SQOOP/usr/local/soft/sqoop-1.4.6/bin/sqoop $SQOOP import --connect jdbc:mysql://192.168.67.100:3306/sqoop \--username root \--password 123456 \-…

【从零开始入门unity游戏开发之——C#篇39】C#反射使用——Type 类、Assembly 类、Activator 类操作程序集

文章目录 前言一、前置知识1、编译器2、程序集&#xff08;Assembly&#xff09;3、元数据&#xff08;Metadata&#xff09; 二、反射1、反射的概念2、反射的作用3、反射的核心Type 类3.1 Type 类介绍3.2 不同方法获取 Type3.3 获取type类型所在的程序集的相关信息 4、反射的常…

【MyBatis源码分析】Spring与MyBatis整合深入解析

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 概述SqlSessionFactoryBean详解配置原理 MapperScannerConfigurer 源码分析介绍postProcessBeanDefinitionRegistry 方法 概述 MyBat…

微信小程序几种数据通信方式记录

在微信小程序开发中&#xff0c;组件间的数据传递是一个常见的需求。以下是不同组件间数据传递的方式&#xff0c;根据传递的方向&#xff08;父子、兄弟、跨层级等&#xff09;提供了多种方法。 1. 父组件向子组件传递数据 通过 properties&#xff08;组件属性&#xff09;&…

使用JMeter对Linux生产服务器进行压力测试

安装 JMeter wget https://downloads.apache.org/jmeter/binaries/apache-jmeter-5.4.1.tgz tar -xzf apache-jmeter-5.4.1.tgz cd apache-jmeter-5.4.1创建 JMeter 脚本 设置中文 选择Options—>Choose Language—>选择其他语言&#xff08;例如&#xff1a;Chinese&am…

STM32-笔记20-测量按键按下时间

1、按键按下的时间-思路 我们先检测下降沿信号&#xff0c;检测到以后&#xff0c;在回调函数里切换成检测上升沿信号&#xff0c;当两个信号都检测到的时候&#xff0c;这段时间就是按键按下的时间&#xff0c;如图所示&#xff1a;>N*(ARR1)CCRx的值 N是在这段时间内&…

2024年12月CCF-GESP编程能力等级认证Scratch图形化编程四级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 10 题,每题 2 分,共 30 分) 第 1 题 2024 年 10 月 8 日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰霍普菲尔德(John J. Hopfie…

常见协议的高危软件漏洞信息

HTTP 协议 协议 | 软件 | 漏洞编号 | 漏洞描述 Apache Log4j CVE-2021-45105 | Apache Log4j拒绝服务攻击漏洞 XWiki Platform CVE-2023-26477 | XWiki Platform存在安全漏洞&#xff0c;该漏洞源于可以通过URL请求参数结合其他参数注入任意脚本宏 Microsoft Windows CVE-20…

CPT203 Software Engineering 软件工程 Pt.2 敏捷方法和需求工程(中英双语)

文章目录 3. Aglie methods&#xff08;敏捷方法&#xff09;3.1 Aglie methods&#xff08;敏捷方法&#xff09;3.1.1 特点3.1.2 优点3.1.3 缺点3.1.4 原则3.1.5 计划驱动与敏捷方法的对比 3.2 Scrum3.2.1 Scrum roles3.2.2 Scrum Activities and Artifacts3.2.2.1 Product B…

攻防靶场(29):目录权限和文件权限 ICMP

目录 1. 侦查 1.1 收集目标网络信息&#xff1a;IP地址 1.2 主动扫描&#xff1a;扫描IP地址段 1.3 搜索目标网站 2. 初始访问 2.1 利用面向公众的应用 3. 权限提升 3.1 有效账户&#xff1a;本地账户 3.2 滥用特权控制机制&#xff1a;Sudo和Sudo缓存 靶场下载地址&#xff1a…

libmodbus源码中重要的两个结构体讲解

文章目录 一、libmodbus重要数据结构讲解**1. 结构体 `_modbus`**定义成员解析小结**2. 结构体 `_modbus_backend`**定义成员解析小结**3. 两者关系和工作流程****关系****工作流程**一、libmodbus重要数据结构讲解 这两个结构体是 libmodbus 的核心,定义了 Modbus 通信上下文…

Spring自动化创建脚本-解放繁琐的初始化配置!!!(自动化SSM整合)

一、实现功能(原创&#xff0c;转载请告知) 1.自动配置pom配置文件 2.自动识别数据库及数据表&#xff0c;创建Entity、Dao、Service、Controller等 3.自动创建database.properties、mybatis-config.xml等数据库文件 4.自动创建spring-dao.xml spring-mvc.xml …

【详解】AndroidWebView的加载超时处理

Android WebView的加载超时处理 在Android开发中&#xff0c;WebView是一个常用的组件&#xff0c;用于在应用中嵌入网页。然而&#xff0c;当网络状况不佳或页面加载过慢时&#xff0c;用户可能会遇到加载超时的问题。为了提升用户体验&#xff0c;我们需要对WebView的加载超时…

java开发中注解汇总​​

注解作用位置注意mybatis Data Getter Setter ToString EqualsAndHashCode AllArgsConstructor NoArgsConstructor Data 代替&#xff1a;无参构造&#xff0c;get&#xff0c;set&#xff0c;toString&#xff0c;hashCode&#xff0c;equals Getter Setter 可放在类和方法上&…

【二】arcgis JavaScript api 实现加载不同坐标系的底图和三维服务

提示&#xff1a;如果是天地图底图参考这篇文章 【一】arcgis JavaScript api 实现加载不同坐标系的底图和三维服务_arcgis js api 调用三维地图服务-CSDN博客 需求&#xff1a; 前端开发实现底图&#xff08;wkid&#xff1a;3857&#xff0c;web墨卡托&#xff09;&#x…

c#接口和抽象方法

目录 抽象方法 1&#xff0c;抽象方法的定义, 2&#xff0c;抽象方法的特性 3&#xff0c;实例 接口 1&#xff0c;接口的定义 2&#xff0c;实现接口 3&#xff0c;接口实例 4&#xff0c;接口的特点 5&#xff0c;多接口实现 接口和抽象类的比较 抽象方法 抽象方法…

HTML——46.制作课程表

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>课程表</title></head><body><h3>课程表</h3><table border"1" cellspacing"0"><tr><th colspan"…

ARM64 Windows 10 IoT工控主板运行x86程序效率测试

ARM上的 Windows 10 IoT 企业版支持仿真 x86 应用程序&#xff0c;而 ARM上的 Windows 11 IoT 企业版则支持仿真 x86 和 x64 应用程序。英创推出的名片尺寸ARM64工控主板ESM8400&#xff0c;可预装正版Windows 10 IoT企业版操作系统&#xff0c;x86程序可无需修改而直接在ESM84…