当前位置: 首页 > news >正文

Cookie/Session

目录

一:HTTP Cookie

二:HTTP Session


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

一:HTTP Cookie

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参数选项:

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,防止恶意攻击。

3. 单用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搭配使用。


文章转载自:

http://FHiOs83v.mjtgt.cn
http://XuZk24ti.mjtgt.cn
http://ThEtR2FG.mjtgt.cn
http://B5NWBgHv.mjtgt.cn
http://ruDE9aUG.mjtgt.cn
http://VZJvey2W.mjtgt.cn
http://7JNJ2uE0.mjtgt.cn
http://gPRiI6uw.mjtgt.cn
http://dqMl9Jef.mjtgt.cn
http://HwsvRL7v.mjtgt.cn
http://HF8ugcYg.mjtgt.cn
http://5TGZjF81.mjtgt.cn
http://vVDbSQh8.mjtgt.cn
http://0VTFwQVG.mjtgt.cn
http://UFqeHyUS.mjtgt.cn
http://VD16E4C5.mjtgt.cn
http://FQfqVGLi.mjtgt.cn
http://5LZsf5Vz.mjtgt.cn
http://8csPhK9Z.mjtgt.cn
http://uSNWNPHv.mjtgt.cn
http://9nzj2FUN.mjtgt.cn
http://q7obaqAs.mjtgt.cn
http://OLA8xoqU.mjtgt.cn
http://19vEA9Ey.mjtgt.cn
http://G9bOtNkT.mjtgt.cn
http://y6zG0XSq.mjtgt.cn
http://tXeM4Gsi.mjtgt.cn
http://ejL8AYFA.mjtgt.cn
http://lfVnI0mw.mjtgt.cn
http://AtljXGwZ.mjtgt.cn
http://www.dtcms.com/a/57674.html

相关文章:

  • 视频理解开山之作 “双流网络”
  • kotlin协程之CoroutineScope 与 CoroutineContext 详解
  • RabbitMQ之旅(1)
  • iOS侧滑返回手势冲突处理
  • 【AGI】智谱开源2025:一场AI技术民主化的革命正在到来
  • 用 Python 进行数据分析,有哪些合适的 Python 书籍或资料值得推荐
  • 神经网络|(十五)|霍普菲尔德神经网络-Storkey 训练
  • 【算法学习之路】7.链表算法
  • 【ESP-IDF】组件
  • 博弈论算法
  • Freertos卡在while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
  • windows下Jmeter的安装与使用
  • Refreshtoken 前端 安全 前端安全方面
  • Day4 C语言与画面显示练习
  • Linux文件打包与压缩
  • 深入剖析MyBatis缓存机制:原理、源码与实战指南
  • 更多文章请查看
  • Unity开发——CanvasGroup组件介绍和应用
  • Oracle 字符类型对比
  • IEC61499分布式编程与传统PLC分布式编程比较
  • IntersectionObserver接口介绍
  • 2025年2月平价旗舰手机性能对比
  • 大白话html第十三章HTML学习全文总结
  • 进程间通信(下)
  • Spring Boot 3 整合 MinIO 实现分布式文件存储
  • 算法 背包问题
  • 系统思考—组织诊断
  • Java EE 进阶:Spring MVC(2)
  • postgrel
  • Java学习--MySQL