Web会话管理

一、会话管理的概念:

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

桌面会话管理、浏览器会话管理、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.mzph.cn/diannao/18262.shtml

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

相关文章

java项目之智能家居系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的智能家居系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于Springboot的智能家居系…

【高校科研前沿】湖北工业大学为第一署名单位在《Science》发表Letters文章:应对青藏高原河流泥沙激增

文章简介 论文名称:Combating sediment surge in Tibetan rivers(应对青藏高原河流泥沙激增) 相关作者及单位:杨洪教授(英国雷丁大学)&刘德富教授(湖北工业大学)&Julian R…

huggingface 笔记:聊天模型

1 构建聊天 聊天模型继续聊天。传递一个对话历史给它们,可以简短到一个用户消息,然后模型会通过添加其响应来继续对话一般来说,更大的聊天模型除了需要更多内存外,运行速度也会更慢首先,构建一个聊天: ch…

灵动微单片机洗衣机方案——【软硬件开发支持】

RAMSUN英尚以洗衣机洗涤主驱电机为例,主驱电机和多电机控制首选MM32SPIN0280.灵动微电子能够提供完整的软硬件开发支持,目前方案已经在主流家电厂出货。 洗衣机方案 皮带洗衣机 DD直驱洗衣机 波轮洗衣机 Mini壁挂和桌面洗衣机 洗涤烘干双变频方案 热泵烘…

uniapp - 文章模块页面

在上一篇文章中,创建了一个空白的文章模块页面。在这一篇文章,让我们来向页面中填充内容。 目录 页面效果涉及uniapp组件1.view2.swiper3.scroll-view4.属性解读1) class"style1 style2 .."2) circular单属性无赋值3) :autoplay"autoplay…

信息标记形式 (XML, JSON, YAML)

文章目录 🖥️介绍🖥️三种形式🏷️XML (Extensible Markup Language)🔖规范🔖注释🔖举例🔖其他 🏷️JSON (JavaScript Object Notation)🔖规范🔖注释&#x…

存内计算从浮点运算优化对数据经济的提升

本篇文章将介绍存内计算技术对于数据经济的提升,我们将从提出问题、解答问题与阐述应用三个方面进行展开介绍,并引入浮点存算、等新兴存算技术进行简要介绍。 一.数据经济&存内计算,结合是否可行? 数据经济与存内计算&#…

浅说线性DP(上)

前言 在说线性dp之前,我们先来聊一聊动态规划是啥? 动态规划到底是啥? 动态规划是普及组内容中最难的一个部分,也是每年几乎必考的内容。它对思维的要求极高,它和图论、数据结构不同的地方在于它没有一个标准的数学…

mysql 01 linux 上安装mysql服务端

01.linux安装 MySQL的大部分安装包都包含了服务器程序和客户端程序,不过在Linux下使用RPM包时会有单独的服 务器RPM包和客户端RPM包,需要分别安装。 1.查看是否已经安装了MySQL rpm -qa | grep mysql如果什么都没有,就是还没有装过MySQL …

基于Pytorch框架的深度学习RegNet神经网络二十五种宝石识别分类系统源码

第一步:准备数据 25种宝石数据,总共800张: { "0": "Alexandrite","1": "Almandine","2": "Benitoite","3": "Beryl Golden","4": "Carne…

数字化农业新时代:图扑农林牧综合监控平台

利用图扑自研 HT for Web GIS 产品,结合遥感技术,构建可交互式的农林牧数据分析平台。该平台围绕地块总览、播种分析、牛只管理、设备查询四个维度,对地区的全貌、农场、村集体分布以及相应的环境进行多样化的可视化展示和进行数据支持&#…

爱岗敬业短视频:成都科成博通文化传媒公司

爱岗敬业短视频:传递正能量,塑造职场新风尚 在当今社会,短视频以其独特的传播方式和广泛的受众群体,成为了信息传播的重要渠道。在众多短视频内容中,以“爱岗敬业”为主题的短视频尤为引人注目,成都科成博…

FreeRtos进阶——队列的特殊用途

信号量与互斥量都一样,都是特殊的队列。但是只有互斥量实现了优先级继承机制。 信号量与互斥量与队列一样,在操作增加或者减少时,必须先关中断在进行操作! 信号量创建揭秘 图中信号量的创建过程,在代码中的体现本质就是…

现在股票交易佣金标准最低是万0.854,低佣金炒股开户方式和流程!

股票交易佣金的最低标准是万分之0.854; 证券公司股票交易佣金默认是万分之3; 无门槛的股票交易佣金是万分之1; 万分之0.854的佣金要求投资者资产达到一定规模,不同的证券公司规定不一样。 如果没有经过证券公司客户经理协商开…

【SQL学习进阶】从入门到高级应用(一)

文章目录 MySQL命令行基本命令数据库表的概述初始化测试数据熟悉测试数据 🌈你好呀!我是 山顶风景独好 💝欢迎来到我的博客,很高兴能够在这里和您见面! 💝希望您在这里可以感受到一份轻松愉快的氛围&#x…

C++牛客周赛43题目分享(3)小红平分糖果,小红的完全平方数,小苯的字符串变化,小红的子数组排列判断

目录 ​编辑 1.前言 2.四道题目 2.1小红平分糖果 2.1.1题目描述 2.1.2输入描述 2.1.3输出描述 2.1.4示例 2.1.5代码 2.2小红的完全平方数 2.1.1题目描述 2.1.2输入描述 2.1.3输出描述 2.1.4示例 2.1.5代码 2.3小苯的字符串变化 2.1.1题目描述 2.1.2输入描述 …

想自学编程,看编程书有些看不懂,下一步应该怎么办?

不管你从事什么工作,编程都有助于你的职业发展。学习编程将给你自己赋能。我喜欢尝试新想法,时刻都有希望启动的新项目。学会编程后,我就可以坐下来自己实现,而不需要依赖他人。 编程也会提升你在其他方面的技能。因为你熟练掌握…

Gitlab不允许使用ssh拉取代码的解决方案

一、起因 之前一直是用ssh进行代码拉取,后来公司搞网安行动,不允许ssh进行连接拉取代码了 因为我是用shell写了个小型的CI/CD,部署前端项目用于后端联调的,因此在自动部署时,不方便人机交互,所以需要自动填充账密。 …

护网2024-攻防对抗解决方案思路

一、护网行动简介 近年来,网络安全已被国家上升为国家安全的战略层面,网络安全同样也被视为维护企业业务持续性的关键。国家在网络安全治理方面不断出台法规与制度,并实施了一些大型项目和计划,如网络安全法、等级保护、网络安全…

【UE C++】 虚幻引擎C++开发需要掌握的C++和U++的基础知识有哪些?

目录 0 引言1 关键的 C 知识2 Unreal Engine 相关知识3 学习建议 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE C】 虚幻引擎C开发需要掌握的C和U的基础知识有哪些?❣️ 寄语&…