Linux 网络(8)

1.cookie

定义HTTP Cookie 是服务器发送到浏览器并本地保存的小块数据,后续向同一服务器发起请求时会自动携带,用于识别请求是否来自同一浏览器(如保持登录状态、记录用户偏好)。


工作原理

  1. 首次访问 :服务器在响应头中通过 Set-Cookie 字段发送 Cookie 到浏览器。
  2. 本地存储:浏览器按域名保存 Cookie。
  3. 后续请求 :浏览器自动在请求头的 Cookie 字段中携带保存的信息。

分类

  • 会话 Cookie:浏览器关闭后即失效。
  • 持久 Cookie:带有明确过期时间,可跨浏览器会话存在;以二进制或 sqlite 等格式存储为浏览器相关文件,

安全性

由于 Cookie 是存储在客户端的,因此存在被篡改或窃取的风险。
用途

用户认证和会话管理(最重要)

跟踪用户行为

缓存用户偏好等

比如在 chrome 浏览器下,可以直接访问:chrome://settings/cookies
认识****cookie

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

在 HTTP 响应头中添加,客户端(如浏览器)获取并自行设置并保存
Cookie。

cpp 复制代码
C++
Set-Cookie: <name>=<value>
其中 <name> 是 Cookie 的名称,<value> 是 Cookie 的值。





C++
Set-Cookie: username=peter; expires=Thu, 18 Dec 2024 12:00:00
UTC; path=/; domain=.example.com; secure; HttpOnly

时间格式必须遵守 RFC 1123标准,具体格式样例:Tue, 01 Jan 2030 12:34:56
GMT 或者 UTC(推荐)。
关于其他可选属性的解释

expires=<date>要验证:设置 Cookie 的过期日期/时间。如果未指定此属
性,则 Cookie 默认为会话 Cookie,即当浏览器关闭时过期。

path=<some_path>要验证:限制 Cookie 发送到服务器的哪些路径。默认
为设置它的路径。

domain=<domain_name>了解即可:指定哪些主机可以接受该 Cookie。默
认为设置它的主机。

secure了解即可:仅当使用 HTTPS 协议时才发送 Cookie。这有助于防止
Cookie 在不安全的 HTTP 连接中被截获。
HttpOnly了解即可:标记 Cookie 为 HttpOnly,意味着该 Cookie 不能被
客户端脚本(如 JavaScript)访问。这有助于防止跨站脚本攻击(XSS)。
注意事项

每个 Cookie 属性都以分号(;)和空格( )分隔。

名称和值之间使用等号(=)分隔。

如果 Cookie 的名称或值包含特殊字符(如空格、分号、逗号等),则需要
进行 URL 编码。
Cookie****的生命周期
如果设置了 expires 属性,则 Cookie 将在指定的日期/时间后过期。

如果没有设置 expires 属性,则 Cookie 默认为会话 Cookie,即当浏览器
关闭时过期。
单独使用Cookie,有什么问题?

我们写入的是测试数据,如果写入的是用户的私密数据呢?比如,用户名密码,
浏览痕迹等。

本质问题在于这些用户私密数据在浏览器(用户端)保存,非常容易被人盗取,更
重要的是,除了被盗取,还有就是用户私密数据也就泄漏了。

2.session

定义HTTP Session 是服务器用于跟踪用户交互期间状态的机制,弥补了 HTTP 协议 "无状态"(每个请求独立)的缺陷,让服务器能记住用户信息。


工作原理

  1. 首次访问 :服务器为用户生成唯一的 Session ID,并通过 Cookie 发送到客户端。
  2. 后续请求 :客户端自动携带该 Session ID,服务器通过它识别用户并获取对应的会话信息。
  3. 存储方式:Session 信息通常存储在服务器的内存、数据库或缓存中。

安全性

  • 风险:Session ID 在客户端与服务器间传递,存在被窃取的可能。
  • 优势:仅泄露 Session ID 时,用户私密信息暂不直接暴露;便于服务端管理(如异地登录)。
  • 增强手段:通过 HTTPS 传输,或设置 Cookie 的 HttpOnlySecure 等属性提升安全性。

超时与失效

  • 可设置超时时间,超时后自动失效。
  • 服务器可主动使 Session 失效(如用户登出时)。

用途

  • 用户认证与会话管理。
  • 存储用户临时数据(如购物车内容)。
  • 实现分布式系统的会话共享(将数据存储在共享数据库或缓存中)。
相关推荐
码农学院24 分钟前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
REDcker8 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
大耳朵-小飞象9 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
ANSIOT9 小时前
安朔科技蓝牙无感开锁方案,靠近自动解锁
网络·科技·物联网
极客侃科技10 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
晏宁科技YaningAI10 小时前
VoIP系统的工程实现模型:从信令控制到媒体传输的完整架构解析
网络·人工智能·架构·系统架构·信息与通信
HLC++10 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室11 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
神奇霸王龙13 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
生活爱好者!13 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器