Linux 网络(8)

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。

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:56GMT 或者 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 失效(如用户登出时)。

用途

  • 用户认证与会话管理。
  • 存储用户临时数据(如购物车内容)。
  • 实现分布式系统的会话共享(将数据存储在共享数据库或缓存中)。

Read more

【Linux:文件 + 进程】进程间通信进阶(1)

【Linux:文件 + 进程】进程间通信进阶(1)

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 1 ~> 准备阶段:进程间通信的概念 * 1.1 是什么(本质前提) * 1.2 为什么 * 1.3 怎么办 * 1.4 思维导图 * 2 ~> 进程间通信 * 2.1 进程间通信的定制标准:System V * 2.2 进程间通信的发展 * 3

By Ne0inhk
【Linux网络系列】:打破 HTTP 明文诅咒,在Linux 下用 C++ 手搓 HTTPS 服务器全过程!(附实现源码)

【Linux网络系列】:打破 HTTP 明文诅咒,在Linux 下用 C++ 手搓 HTTPS 服务器全过程!(附实现源码)

🔥 本文专栏:Linux网络 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录:成人的世界里,情绪是最廉价的成本。你可以崩溃,但请记得设置闹钟。哭完之后,账单还在,生活还得继续,最能治愈焦虑的永远不是鸡汤,而是账户里的余额和手里的专业技能。 ★★★ 本文前置知识: Http 引入 在之前的讲解中,我们探讨了HTTP 协议并实现了一个基于HTTP 的 Web 服务器。然而,HTTP存在一个根本性的安全缺陷,即明文传输。我们知道,在客户端(通常为浏览器)与服务端通信的大多数场景中,客户端会向服务端发送GET 或POST 请求。这两种请求均可用于提交数据。对于GET 请求,其提交的表单数据以查询参数的形式附加在请求行中的 URL 之后,表现为键值对。由于 URL 本身存在长度限制,GET 请求只能传递较简单的表单数据,无法传输体积较大的内容(例如文件)。此外,提交后,浏览器地址栏会完整显示

By Ne0inhk
鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代

鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代

《鸿蒙APP开发从入门到精通》第22篇:鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代 🚀📱🔧 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第22篇——上线与运维、用户反馈、持续迭代篇,100%承接第21篇的合规审计优化、风险控制优化、产品创新优化架构,并基于金融场景的上线与运维、用户反馈、持续迭代要求,设计并实现鸿蒙金融理财全栈项目的上线与运维、用户反馈、持续迭代功能。 学习目标: * 掌握鸿蒙金融理财项目的上线与运维设计与实现; * 实现应用上线、应用运维、应用监控; * 理解用户反馈在金融场景的核心设计与实现; * 实现用户反馈收集、用户反馈分析、用户反馈处理; * 掌握持续迭代在金融场景的设计与实现; * 实现持续集成、持续部署、持续交付; * 优化金融理财项目的用户体验(上线与运维、用户反馈、持续迭代)。 学习重点: * 鸿蒙金融理财项目的上线与运维设计原则; * 用户反馈在金融场景的应用; * 持续迭代在金融场景的设计要点。 一、 上线与运维基础 🎯 1.1 上线与运维定义 上线与运维是指对金融理财项目的

By Ne0inhk
【Linux我做主】进度条小程序深度解析

【Linux我做主】进度条小程序深度解析

Linux下C语言进度条程序深度解析 * 进度条小程序 * GitHub地址 * 前言 * 前置知识 * 回车换行(CR/LF)的深度解析 * 历史渊源与技术规范 * 在进度条/倒计时中的应用 * 缓冲区机制的全面剖析 * 缓冲区引入 * 缓冲类型对比 * 进度条开发中的关键控制 * 进度条实现 * 以小见大——倒计时 * 倒计时最终效果演示 * 错误演示 * 位宽不够带来的影响 * 设置位宽后不反转带来的影响 * 不使用\r回车带来的影响 * 总结回顾倒计时 * 进度条架构设计 * 组件关系图 * 核心数据结构 * 版本迭代解析 * v1版本悟原理 * progressBar.h头文件 * progressBar.c源文件 * main.c调用 * V2版本求拓展 * progressBar.h头文件 * pr

By Ne0inhk