Web会话管理

news2024/12/27 13:01:18

一、会话管理的概念:

在人机交互时,会话管理是保持用户的整个会话活动的互动与计算机系统跟踪过程会话管理分类:

桌面会话管理、浏览器会话管理、Web服务器的会话管理。

二、为什么需要会话管理?

HTTP是一种无状态协议,一次请求结束,客户端与服务端的连接就会断开,服务器再次收到请求

时,无法识别此次请求是哪个用户发过来的,需要重新建立连接。为了判断发送请求的用户,需要

一种记录用户的方式,也就是Web应用会话管理。

三、常见的Web应用会话管理的方式

1、基于server端session的管理方式

①在早期的Web应用中,通常使用服务端session来管理用户的会话。

②服务端session是用户第一次访问应用时,服务器就会创建的对象,代表用户的一次会话过程,

可以用来存放数据。服务器为每一个session都分配一个唯一的sessionID以保证每个用户都有一个

不同的session对象。

③服务器在创建完session后,会把sessionID通过cookie返回给用户所在的浏览器这样当用户第二

次及以后向服务器发送请求的时候,就会通过cookie把sessionID传回给服务器,以便服务器能够

根据sessionID找到与该用户对应的session对象。

④session通常设定有有效时间,比如1个小时。当时间失效后,服务器会销毁之前的session,并

创建新的session返回给用户。但是只要用户在失效时间内,有发送新的请求给服务器,通常服务

器都会把他对应的session的有效时间根据当前的请求时间再重新刷新。

⑤它只有在用户登录认证成功之后,并且session在一开始并不具备会话管理的作用。"往session

对象里面放入了用户登录成功的凭证,才能用来管理会话。管理会话的逻辑也很简单,只要拿到用

户的session对象,看它里面有没有登录成功的凭证,就能判断这个用户是否已经登录。当用户主

动退出的时候,会把它的session对象里的登录凭证清掉。所以在用户登录前或退出后或者session

对象失效时,肯定都是拿不到需要的登录凭证的。

优点:

①某些地方使用可以简化Web开发:如果在诸多Web页面间传递一个变量,那么用session变量要比

通过QueryString传递变量可使问题简化。

②安全性好:客户端与服务端保持会话状态的媒介始终只是一个sessionID串,只要这个串够随机,

攻击者就不能轻易冒充他人的sessionID进行操作;除非通过CSRF或http劫持的方式,才有可能冒充

别人进行操作;即使冒充成功,也必须被冒充的用户session里面包含有效的登录凭证才行。

缺点:

①这种方式将会话信息存储在Web服务器里面,当用户同时在线量比较多时,这些会话信息会占据

比较多的内存

②当应用采用集群部署的时候,会遇到多台web服务器之间如何做session共享的问题。

③多个应用要共享session时,还会遇到跨域问题。不同的应用可能部署的主机不一样,需要在各

个应用做好cookie跨域的处理。

2、cookie-based的管理方式

session的管理方式会增加服务器的负担和架构的复杂性,所以后来就提出把用户的登录凭证直接

存到客户端的方案,当用户登录成功之后,把登录凭证写到cookie里面并给cookie设置有效期,后

续请求直接验证存有登录凭证的cookie是否存在以及凭证是否有效,即可判断用户的登录状态。

区别:Cookie将数据存储在客户端Session将数据存储在服务端

①用户发起登录请求,服务端根据传入的用户密码之类的身份信息,验证用户是否满足登录条件,

如果满足,就根据用户信息创建一个登录凭证,这个登录凭证简单来说就是一个对象,最简单的形

式可以只包含用户id、凭证创建时间和过期时间三个值。

②服务端把上一步创建好的登录凭证,先对它做数字签名,然后再用对称加密算法做加密处理,将

签名、加密后的字串,写入cookie。cookie的名字必须固定(如ticket),因为后面再获取的时候,还

得根据这个名字来获取cookie值。这一步添加数字签名的目的是防止登录凭证里的信息被篡改,因

为一旦信息被篡改,那么下一步做签名验证的时候肯定会失败。做加密的目的,是防止cookie被别

人截取的时候,无法轻易读到其中的用户信息。

③用户登录后发起后续请求,服务端根据上一步存登录凭证的cookie名字,获取到相关的cookie

值。然后先做解密处理,再做数字签名的认证,如果这两步都失败,说明这个登录凭证非法;如果

这两步成功,接着就可以拿到原始存入的登录凭证了。然后用这个凭证的过期时间和当前时间做对

比,判断凭证是否过期,如果过期,就需要用户再重新登录;如果未过期,则允许请求继续。

优点

①实现了服务端的无状态化(最大的优点),服务端只需要负责创建和验证登录cookie即可,无需保

持用户的状态信息。

②cookie可以跨越同域名下的的多个网页,但不能跨越多个域名使用

③可以设置有效期限,控制cookie的生命周期,使之不会永远有效(攻击者可能拿到的是过期的

cookie)

缺点

①cookie有大小限制,存储不了太多数据

②每次传送cookie,增加了请求的数量,对访问性能也有影响

③同样存在跨域问题(不同域名无法互相读取cookie)

3、token-based的管理方式

①Session和Cookie两种会话管理方式由于都要用到Cookie,不适合用在nativeapp里面,因为

native app不是浏览器,不好管理Cookie,因此都不适合做纯API服务的登录认证。要实现API服务

的登录认证,就需要用到token-based的会话管理方式

②token-based的管理方式从流程上和实现上跟cookie-based的管理方式没有太多区别,只不过

cookie-based的管理方式中写到cookie里面的ticket在这种方式下称为token,这个token在返回给客

户端之后,后续请求都必须通过url参数或者是httpheader的形式,主动带上token,:这样服务端接

收到请求之后就能直接从http header或者ur里面取到token进行验证。

优点:

①支持跨域访问:Cookie是不支持跨域访问的,Token支持

②无状态:Token无状态,Session有状态(有状态和无状态最大的区别就是服务端会不会保存客户端

的信息)

③支持移动设备:Token更适用于移动应用,Cookie不支持手机端访问

缺点:

①占带宽:正常情况下Token要比session ID更大,需要消耗更多的流量,挤占更多带宽

②无法在服务端注销,很难解决劫持问题。

四、安全问题:

在Web应用里,会话管理的安全性始终是最重要的安全问题,对用户的影响极大。从会话管理凭证

来说,Session会话管理的会话凭证仅仅是一个sessionID,所以只要这个session ID足够随机,那

么攻击者就不会轻易地冒充别人的session ID进行操作;Cookie会话管理的凭证(ticket)以及Token会

话管理凭证(token)都是一个在服务端做了数字签名和加密处理的串,所以只要密钥不泄露,攻击者

也无法轻易拿到这个串中有效信息并对它进行篡改。总之,这三种会话管理方式的凭证本身是比较

安全的。从客户端和服务端的HTTP过程来说,当攻击者截获到客户端请求中的会话凭证就能拿这

个凭证冒充原用户,做一些非法操作,而服务器也认不出来。这种安全问题,可以简单采用

HTTPS来解决,虽然可能还有HTTP劫持这种更高程度的威胁存在,但是从代码能做的防范,确实

也就是这个层次了。

一、会话管理的概念:

二、为什么需要会话管理?

三、常见的Web应用会话管理的方式

1、基于server端session的管理方式

2、cookie-based的管理方式

3、token-based的管理方式

四、安全问题:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringCloud】Spring Cloud基本介绍

目录 回顾架构分类单体架构分布式架构微服务架构什么是微服务优点缺点微服务的架构特征:微服务架构面临的挑战技术挑战微服架构的设计原则微服务概念提供者(Provider)消费者(Consumer)RPC和Restful集群分布式 总结 服务拆分和远程调用服务拆分原则服务拆分示例 思考…

保障餐饮场所安全:可燃气体报警器专业检测的必要性

在餐饮行业,火灾隐患一直是备受关注的问题。为了有效预防和及时发现可燃气体泄漏,可燃气体报警器的专业检测周期显得尤为重要。 今天,佰德和大家一起来深入了解一下可燃气体报警器的专业检测周期,若您对此有不同的观点或其他的问…

比较(一)利用python绘制条形图

比较(一)利用python绘制条形图 条形图(Barplot)简介 条形图主要用来比较不同类别间的数据差异,一条轴表示类别,另一条则表示对应的数值度量。 快速绘制 基于seaborn import seaborn as sns import matplo…

新型高性能数据记录仪ETHOS 2

| 具有强大CPU性能的数据记录仪 IPETRONIK推出了一款新型高性能数据记录仪——ETHOS 2,作为ETHOS的第二代,它借助新型英特尔i7-9850HE处理器,实现了11,572的性能指数,从而能够快速有效应对CAN FD、LIN和以太网总线测量方面的日益…

linux线程,线程控制与线程相关概念

线程概念 线程这个词或多或少大家都听过,今天我们正式的来谈一下线程; 在我一开始的概念中线程就是进程的一部分,一个进程中有很多个线程,这个想法基本是正确的,但细节部分呢我们需要细细讲解一下; 什么…

OKR 实践:来自一位信息技术部主管的成功秘诀

OKR 实践:来自一位信息技术部主管的成功秘诀 为什么选择OKR 公司信息技术部为38个各地分公司、12,000名员工的IT需求提供服务。庞大而多样的客户群常常使我们的团队分散,许多团队都在各自为政,以个案为基础解决问题,而不是采用企业…

CSS文本粒子动画特效之爱心粒子文字特效-Canvas

1. 效果图 2.完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;paddin…

Sqoop的安装与测试

这里写目录标题 什么是Sqoop?Sqoop的安装与配置安装测试 什么是Sqoop? Sqoop就是hadoop和mysql的一个中间介质 , 作用就是可以将hadoop中的数据传到mysql中 , 或将mysql中的数据导入到hadoop中 Sqoop的安装与配置 安装 详细代码 //解压安装 [roothadoop soft]# tar -zxv…

国产数据库替代加速 助力数字中国建设

5月24日&#xff0c;随着第七届数字中国建设峰会在福州的成功举办&#xff0c;释放数据要素价值、发展新质生产力成为当下热议的话题。 数据作为新型生产要素&#xff0c;是数字化、网络化、智能化的重要基础。北京人大金仓信息技术股份有限公司&#xff08;以下简称人大金仓&a…

AI智能体研发之路-模型篇(三):中文大模型开、闭源之争

博客导读&#xff1a; 《AI—工程篇》 AI智能体研发之路-工程篇&#xff08;一&#xff09;&#xff1a;Docker助力AI智能体开发提效 AI智能体研发之路-工程篇&#xff08;二&#xff09;&#xff1a;Dify智能体开发平台一键部署 AI智能体研发之路-工程篇&#xff08;三&am…

10.RedHat认证-Linux文件系统(上)

10.RedHat认证-Linux文件系统(上) ⽂件系统&#xff0c;顾名思义&#xff0c;是⼀个组织⽂件的“系统(system)”。file system ⽂件系统是⽤来组织⽂件的&#xff0c;通俗⼀点理解的话&#xff0c;⽂件系统是⽤来存储⽂件的。 硬盘是不能直接存放⽂件或数据。 我们通过将硬…

【ARM+Codesys案例】T3/RK3568/树莓派+Codesys绕线机控制方案—运动控制器,支持定制

绕线机控制方案 SC 系列运动控制器 绕线机就是把线状的物体缠绕到特定的工件上的机器。凡是电器产品大多需要用漆包铜线(简称漆包线)绕制成电感线圈。绕线机从线圈设计、参数分析、数控编程、到自动补偿技术的实现、整个绕线工艺过程自适应诊断及控制、排线部分运动自适应干涉…

鸿蒙OS开发:【一次开发,多端部署】(一多天气)项目

一多天气 介绍 本示例展示一个天气应用界面&#xff0c;包括首页、城市管理、添加城市、更新时间弹窗&#xff0c;体现一次开发&#xff0c;多端部署的能力。 1.本示例参考一次开发&#xff0c;多端部署的指导&#xff0c;主要使用响应式布局的栅格断点系统实现在不同尺寸窗…

IMU应用于评估脊髓损伤患者的膝关节痉挛

近日&#xff0c;美国西北大学团队利用便携式IMU系统精确量化脊髓损伤&#xff08;SCI&#xff09;患者膝关节伸肌痉挛的程度&#xff0c;不仅验证了IMU系统的可靠性与准确性&#xff0c;还强调了其在动态评估痉挛变化方面的独特贡献。 研究团队创新性地将IMU技术引入到经典的…

web前端之vue动态访问静态资源、静态资源的动态访问、打包、public、import、URL、Vite

MENU 静态资源与打包规则动态访问静态资源直接导入将静态资存放在public目录中动态导入URL构造函数结束语实践与坑附文 静态资源与打包规则 介绍 Vite脚手架在打包代码的时候&#xff0c;会把源代码里对于静态资源的访问路径转换为打包后静态资源文件的路径。主要的区别是文件指…

neo4j详细安装教程

前言 最近开始学习知识图谱&#xff0c;现整理Neo4j的详细安装教程&#xff0c;Neo4j是一个高性能的,NOSQL图形数据库&#xff0c;它将结构化数据存储在网络上而不是表中。由于知识图谱中存在大量的关系型信息&#xff08;实体—关系—实体&#xff09;, 使用结构化数据库进行存…

推送镜像到私有harbor仓库

本地已制作镜像&#xff1a;tomcat-8.5.100-centos7.9:1.0。 本地已经搭建私有仓库&#xff1a;harbor.igmwx.com。 现在需要把镜像 tomcat-8.5.100-centos7.9:1.0 推送到harbor。 &#xff08;1&#xff09;查看本地镜像&#xff1a;sudo docker images zhangzkzhangzk:~/d…

服务器数据恢复—RAID5阵列崩溃如何恢复上层OA和oracle数据库的数据?

服务器数据恢复环境&故障&#xff1a; 某公司的一台服务器中的raid5磁盘阵列有两块磁盘先后掉线&#xff0c;服务器崩溃。故障服务器的操作系统为linux&#xff0c;操作系统部署了oa&#xff0c;数据库为oracle。oracle数据库已经不再对该oa系统提供后续支持&#xff0c;用…

企业如何实现数据采集分析展示一体化

在当今数字化时代&#xff0c;企业越来越依赖于数据的力量来驱动决策和创新。通过全量实时采集各类数据&#xff0c;并利用智能化工具进行信息处理&#xff0c;企业能够借助大数据分析平台深入挖掘数据背后的价值&#xff0c;从而为企业发展注入新动力。 一、企业痛点 随着数字…

卢文岩博士受邀参与中国科学院大学校友论坛 解码DPU核心价值

近日&#xff0c;第五届中国科学院大学校友创新论坛正式举行&#xff0c;本次论坛聚焦科技前沿领域&#xff0c;旨在搭建高端对话平台&#xff0c;促进产学研深度融合。在大算力时代——AI技术前沿沙龙上&#xff0c;中科驭数高级副总裁、CTO卢文岩博士受邀分享《DPU——连接算…