Cookie/Session

目录

[一:HTTP Cookie](#一:HTTP Cookie)

[二:HTTP Session](#二:HTTP Session)


假设有这么一个场景:比如登录一次bilibili,后续在访问就不需要登录了,又因为HTTP是无状态有,无连接的,无状态指客户端与服务器的请求是独立的,HTTP并不会保存客户端的任何信息,即使历史访问过。无连接指每次请求都会建立一次连接,结束关闭该连接,即:HTTP/1.0,比如后续采用HTTP/1.1持久连接:Keep-Alive等。

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

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

1.2:浏览器在接收到 Cookie 后,会将其保存在本地。

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

2.1:内存级(会话)Cookie/文件级(持久)Cooike:

  1. 浏览器也是一个进程,内存给进程分配空间,保存的Cookie也就会在内存里面,当浏览器关闭,Cookie也就释放了,下次打开浏览器再次请求就不会携带Cookie了

  2. Cookie也可以保存在浏览器内部的某个文件里,每次请求预先读取该数据传入Cookie,比如关闭浏览器,再次打开服务器也能识别用户身份。

Cookie参数选项:

cpp 复制代码
Set-Cookie: username=peter; expires=Thu, 18 Dec 2024 12:00:00
UTC; path=/; domain=.example.com; secure; HttpOnly

username表示Cookie的唯一性,也急速Key,expires表示将来某个时间Cookie到期,path表示比如/目录,该目录下的所有资源都会携带Cookie,否则访问特定path才会提交,domain表示该Cookie提交指定的域名,比如只会访问bilibili,而不会访问其他的域,secure表示只能通过HTTPS协议发送,主要保证安全性,HttpOnly表示只能由HTTP访问该Cookie,防止恶意攻击。

  1. 单用Cookie有什么问题?

Cookie是保存在客户端的,由客户端进行维护,假设Cookie写在某个文件里被窃取,攻击者就用盗取的Cookie向目标服务器发送请求,身份被冒领,一些用户的浏览痕迹和其他信息也保存在Cookie里,也就是隐私泄露,如果Cookie采用明文传输,比如账号密码也会泄露,所以基于这些问题引入Session,他是保存在服务器内,由服务器进行维护。

二:HTTP Session

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

原理:客户端向目标服务器首次进行请求,比如携带账号和密码,服务器解析通过算法生成Sessionid返回给客户端,包括客户端的基本信息也保存在服务器内,服务器设置Set-Cookie:Sessionid 返回给客户端,客户端后续用Cookie里的Sessionid来和服务器进行身份识别。

Session也可以设置过期时间,过期服务器清理Session对应的对象。

安全性:客户端的数据是保存在服务器内的,所以私密信息相对安全,但Sessionid被窃取,用户身份一样会被冒领,但可以加一些策略,比如服务器维护用户的活跃指数,ip地址,可能甄别出Sessionid被盗取从而清理Session对象。

总结:Cookie和Session都可以用来做用户认证和会话保持,跟踪用户状态,各有优缺点,Session相对于Cookie是比较安全的,Session一般和Cookie搭配使用。

相关推荐
小辰记事本7 小时前
从零读懂RoCEv2数据包构造:从WQE到线缆上的完整旅程
服务器·网络·网络协议·rdma
北京耐用通信8 小时前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
在角落发呆9 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
YMWM_11 小时前
UDP协议详解:从原理到Python实践
网络·网络协议·udp
pengyi87101512 小时前
共享 IP 与独享 IP 怎么选?被封后升级方案避坑
网络·网络协议·tcp/ip
YuanDaima204812 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能
凯勒姆13 小时前
网工网络设备原理及配置
网络·智能路由器
上海云盾-小余14 小时前
网站恶意爬虫拦截策略:智能识别与封禁实操方案
网络·爬虫·安全·web安全
xhbh66614 小时前
网关端口映射和路由器端口转发有什么区别?配置要点全解析
运维·服务器·网络·智能路由器·端口映射·映射·无痕网关
半壶清水14 小时前
用P4 Tutorial、BMv2 和 Mininet‌解析网络第一集------模拟环境搭建
运维·服务器·网络·网络协议·tcp/ip