欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > cookie和session

cookie和session

2025/10/15 18:44:10 来源:https://blog.csdn.net/2301_77459845/article/details/144472437  浏览:    关键词:cookie和session

目录

  • 一、cookie
  • 二、session

一、cookie

我们在浏览器,要去看b站的视频,首先要进行登录,因为网站要识别用户身份。登录完之后,我们就可以看视频了(服务器响应回来)。但是,当我们关闭浏览器,再重新打开,又要进行账号密码登录。因为http协议是无状态、无连接的,同样的客户端访问同样的服务端,这次的请求与上次的请求是没有任何关系的,所以还是要进行账号密码登录。

但是这样是不是很不方便,所以引入了cookie,一次登录后,后续再打开就不需要再重新账号密码验证用户了,因为cookie保存了之前用户的登录验证信息。

在这里插入图片描述

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

工作原理:

  • 当用户第一次访问网站时,服务器会在响应的 HTTP 头中设置 Set-Cookie字段,用于发送 Cookie 到用户的浏览器
  • 浏览器在接收到 Cookie 后,会将其保存在本地,通常是按照域名进行存储
  • 在之后的请求中,浏览器会自动在 HTTP 请求头中携带 Cookie 字段,将之前保存的 Cookie 信息发送给服务器

浏览器(客户端)保存用户的数据一般有两种方案:

  • 内存级:比如,启动浏览器是一个进程,进程要申请空间,用户的信息保存在这空间,但是如果关闭浏览器,进程也就终止,空间释放了,用户保存的信息就不在了
  • 文件级:在Windows中,浏览器是安装在文件中的C盘或者D盘,是有路径的,它的配置文件也有路径,所以用户的信息保存在这些配置文件中,即使浏览器关闭了,只要配置文件还在,用户保存的信息就还在

总结(3点):
用户发起请求,服务器会将部分用户信息保存在客户端
用户信息保存在客户端的cookie中,当客户端再次发起请求,会携带这些数据,不需要再认证
保存数据的方式有两种:内存级、文件级

用途:

  • 用户认证和会话管理
  • 跟踪用户行为
  • 缓存用户偏好

单独使用cookie是不安全的,因为用户的私密信息保存在cookie中,cookie在客户端,容易被窃取。然后被窃取者以用户的身份登入,同时他也知道用户的私密信息。解决方式:cookie+session

二、session

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

在这里插入图片描述
客户端登录,输入账号密码,认证通过后服务端会生成一个sessionID和构建一个session对象,sessionID是随机数,session对象用来保存用户的信息;服务端响应回去,会将SessionID发送给客户端,后面客户端再次请求时会携带这个sessionID,直接识别通过,获取用户信息。

实际是cookie+session一起使用的

用途:

  • 用户认证和会话管理
  • 存储用户的临时数据
  • 实现分布式系统的会话共享

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

session的安全性
session并不是绝对安全的,它是相对安全。客户端中cookie只记录了sessionID,没有用户的私密信息。但是如果黑客把sessionID窃取了怎么办,然后用这个sessionID登入,不是也一样不安全吗。

首先,单独使用cookie,既会泄漏私密信息,也会被冒充身份登入;而cookie+session不会泄漏私密信息,但是sessionID被窃取会被冒充身份登入。怎么办?由于session是服务端管理的,可以让这个被窃取的sessionID失效,就OK了;但是还有一个问题,怎么知道这个SessionID是非法的,需要联系业务。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词