16、XSS——会话管理

文章目录

  • 一、web会话管理概述
    • 1.1 会话管理
    • 1.2 为什么需要会话管理?
    • 1.3 常见的web应用会话管理的方式
  • 二、会话管理方式
    • 2.1 基于server端的session的管理方式
    • 2.2 cookie-based的管理方式
    • 2.3 token-based的管理方式
  • 三、安全问题

一、web会话管理概述

1.1 会话管理

  在人机交互时,会话管理是保持用户的整个会话活动的互动与计算机系统跟踪过程。会话管理分类:桌面会话管理、浏览器会话管理、web服务器的会话管理。

1.2 为什么需要会话管理?

  HTTP是一种无状态协议,一次请求结束,客户端与服务器的连接就会断开,服务器再次收到请求时,无法识别此次请求是哪个用户发过来的,需要重新建立连接。为了判断发送请求的用户,需要一种记录用户的方式,也就是web应用会话管理。

1.3 常见的web应用会话管理的方式

  • 基于server端的session的管理方式
  • cookie-based的管理方式
  • token-based的管理方式

二、会话管理方式

2.1 基于server端的session的管理方式

  在早期的web应用中,通常使用服务端session来管理用户的会话。
  服务端session使用户第一次访问应用时,服务器就会创建的对象,代表用户的一次会话过程,可以用来存放数据。服务器为每一个session都分配一个唯一的session ID,以保证每个用户都有一个不用的session对象。
  服务器在创建完session后,会把session ID通过cookie返回给用户所在的浏览器,这样当用户第二次及以后向服务器发送请求的时候,就会通过cookie把session ID传回给服务器,以便服务器能够根据session ID找到该用户对应的session对象。
  session 通常设定有效时间,比如1小时。当时间失效后,服务器会销毁之前的session,并创建新的session返回用户。但是只要用户在失效时间内,有发送新的请求给服务器,通常服务器都会把他对应的session的有效时间根据当前的请求时间再重新刷新。
  session在一开始并不具备会话管理的作用。它只有在用户登录认证成功之后,并且往session对象里面放入了用户登录成功的凭证,才能用来管理会话。管理会话的逻辑也很简单,只要拿到用户的session对象,看它里面有没有登录成功的凭证,就能判断这个用户是否已经登陆。当用户主动退出时,会把它的session对象里的登录凭证清掉。所以在用户登录前或退出后或者session对象失效时,肯定都是拿不到需要的登录凭证的。
  session实现会话管理的流程图:
在这里插入图片描述

2.2 cookie-based的管理方式

  session的管理方式会增加服务器的负担和架构的复杂性,所以后来就提出把用户的登录凭证直接存在客户端的方案,当用户登陆成功后,把登录凭证写到cookie里面,并给cookie设置有效期,后续请求直接验证存有登录凭证的cookie是否存在以及凭证是否有效,即可判断用户的登录状态。
> Cookie与Session最大的区别:
>- Cookie将数据存储在客户端
>- Session将数据存储在服务端

  用户发起登录请求,服务端根据传入的用户密码之类的身份信息,验证用户是否满足登录条件,如果满足,就根据用户信息创建一个登录凭证,这个登陆凭证简单来说就是一个对象,最简单的形式可以只包含用户id、凭证创建时间和过期时间三个值。
  服务端把上一步创建好的登陆凭证,先对它进行数字签名,然后再用对称加密算法做加密处理,将签名、加密后的字串,写入cookie。cookie的名字必须固定(如ticket),因为后面再获取的时候,还得根据这个名字来获取cookie值。这一步添加数字签名的目的时防止登录凭证里的信息被篡改,因为一旦信息被篡改,那么下一步做签名验证的时候肯定会失败。做加密的目的是,防止cookie一旦被别人截取的时候,无法轻易读取到其中的用户信息。
  用户登录后发起后续请求,服务端会根据上一步存登录凭证的cookie名字,获取到相关的cookie值。然后先做解密处理,再做数字签名的认证,如果这两部都失败,说明这个登录凭证非法;如果这两步成功,接着就可以拿到原始存入的登录凭证了。然后用这个凭证的过期时间和当前时间做对比,判断凭证是否过期,如果过期,就需要用户再重新登录;如果未过期,则允许请求继续。
  cookie实现会话管理的流程:
在这里插入图片描述
优点:
1. 实现了服务端的无状态化,服务端只需要负责创建和验证登录cookie即可,无需保持用户的登陆状态。
2. cookie可以跨越同域名下的多个网页,但不能跨越多个域名使用。
3. 可以设置有效期限,控制cookie的生命周期,使之不会永久有效。

缺点:

  1. cookie有大小限制,存储不了太多数据。
  2. 同样存在跨域问题(不同域名无法相互读取cookie)。

2.3 token-based的管理方式

  Session和Cookie两种会话管理方式由于都要用到cookie,不适合用在native app里面,因为native app不是浏览器,不好管理cookie,因此都不适合做纯API服务的登录认证。是实现API服务的登录认证,就需要用到token-based的会话管理方式。
  token-based的管理方式在流程上和实现上跟cookie-based的管理方式没有太多区别,只不过cookie-based的管理方式中写道cookie里面的ticket再这种方式下被称为token,这个token在返回给客户端后,后续请求都必须通过url参数或者http header的形式,主动带上token,这样服务端接收到请求后就能直接从http header或者url里面渠道token进行验证。
  token实现会话管理的方式:
在这里插入图片描述
优点:

  1. 支持跨域访问:cookie不支持跨域访问,token支持。
  2. 无状态:Token无状态,session有状态(有状态和无状态的最大区别就是服务端会不会保存客户端的信息)。
  3. 支持移动设备:Token更适合移动应用,cookie不支持手机端访问。

缺点:
4. 占带宽:正常情况下Token要比session id更大,需要消耗更多的流量,挤占更多的带宽。’
5. 无法在服务端注销,很难解决劫持问题。

三、安全问题

  在web应用里,会话管理的安全性始终是最重要的安全问题,对用户的影响极大。
  从会话管理凭证来说,session会话管理的会话凭证仅仅是一个session ID,所以只要这个session ID足够随机,那么攻击者就不会轻易地冒充别人的session ID进行操作;cookie会话管理的凭证(ticket)以及Token会话管理凭证(token)都是一个在服务端做了数字签名和加密处理的串,只要密钥不泄露,攻击者也无法轻易拿到这个串中有效信息并对它进行篡改。总之,这三种会话管理方式的凭证本身是比较安全的。
  从客户端和服务端的HTTP过程来说,当攻击者截获到客户端请求中的会话凭证,就能拿到这个凭证冒充原用户,做一些非法操作,而服务器也认不出来。这种安全问题,可以简单采用HTTPS来解决。

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

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

相关文章

加速度jsudo:IC商城系统4.0版正式发布 PCB计价电子元器件商城

近日,在加速度软件新品会发布会上,Mike正式公布了其4.0版本的电子元器件商城系统,展示了迭代后的强大新功能。在招募了数十家元器件销售、运营和老板测试体验后,获得了大家一致的好评。其中,中国电子南京某子公司董事长…

VMware虚拟机系统CentOS镜像的下载

文章目录 阿里云下载官网下载参考文档 一些小版本可能过时或者其他原因已经不能存在了,只有大版本号最新的,或者其他最新版本 阿里云下载 1-百度搜索:阿里云 2-找到开发者社区 3-找到下载,选择镜像 4-选择系统 5-点击镜像地…

vivado时序方法检查3

TIMING-7 &#xff1a; 相关时钟间无公共节点 时钟 <clock_name> 与 <clock_name> 之间相互关联 &#xff08; 一起定时 &#xff09;&#xff0c; 但两者间无公共节点。此设置在硬件中可能失败。要查找这些时钟之间的时序路径&#xff0c; 请运行以下命令 &a…

岚图追光PHEV 25.28万元起售,开卷混动豪华轿车

作者&#xff5c;Amy 编辑&#xff5c;德新 12月5日晚&#xff0c;2023岚图科技日上&#xff0c;岚图汽车正式发布了其新一代SOA电子电气架构天元架构&#xff0c;并宣布了以“新行政电动旗舰”为定位的岚图追光PHEV正式上市。 岚图追光PHEV是岚图汽车旗下首款电混轿车&#x…

selenium自动化测试:xpath八种定位方式!

01、前言 如果可以的话&#xff0c;请先关注&#xff08;专栏和账号&#xff09;&#xff0c;然后点赞和收藏&#xff0c;最后学习和进步。你的支持是我继续写下去的最大动力&#xff0c;个人定当倾囊而送&#xff0c;不负众望。谢谢&#xff01;&#xff01;&#xff01; 1.…

【springboot】整合redis和定制化

1.前提条件:docker安装好了redis,确定redis可以访问 可选软件: 2.测试代码 (1)redis依赖 org.springframework.boot spring-boot-starter-data-redis (2)配置redis &#xff08;3&#xff09; 注入 Resource StringRedisTemplate stringRedisTemplate; 这里如果用Autowi…

docker安装及简单使用(Linux版本)

文章目录 前言一、docker安装二、docker命令pull&#xff08;安装镜像&#xff09;images&#xff08;查看镜像&#xff09;run&#xff08;创建容器&#xff09;删除容器exec&#xff08;进入运行中的容器&#xff09;常用命令 总结如有启发&#xff0c;可点赞收藏哟~ 前言 ht…

Python 进阶(十三):JSON 序列化和反序列化(json 模块)

大家好&#xff0c;我是水滴~~ 本篇文章主要介绍json模块的功能&#xff0c;包括将Python对象序列化到文件、将Python对象序列化为字符串、序列化时类型的对照表、将文件中JSON数据反序列化为Python对象&#xff0c;将JSON字符串反序列化为Python对象、反序列化时类型的对照表…

2023中医药国际传承传播大会在深圳召开

12月2日&#xff0c;2023中医药国际传承传播大会在深圳召开&#xff0c;大会由世界针灸学会联合会、中新社国际传播集团、中国新闻图片网、中国民族医药学会、中国针灸学会主办&#xff0c;世界针灸学会联合会健康传播工作委员会、中新雅视文化发展有限公司公司与深圳巨邦传媒集…

播放pcap抓包文件中的amr-wb、amr-nb、evs声音

前言 由于wireshark并不能解析amr-wb、evs数据&#xff0c;所以也就没办法播放响应的音频。在遇到问题时&#xff0c;想还原抓包的数据是否正常就很难受。为了解决这个问题&#xff0c;我看了RFC4867&#xff0c;想着自己写一个解包小工具&#xff0c;最后彻底放弃。。感觉太复…

Qt Creator :Analyze heob 使用教程

功能&#xff1a;在windows系统上检测和调试软件代码的内存泄漏情况&#xff1b; 使用环境 &#xff1a;需要下载 heob和dwarfstack 把dwarfstack动态库放在heob的执行程序目录下 使用步骤&#xff1a; 第三步&#xff1a;配置启动调试程序 第四步&#xff1a;配置heob的路…

什么因素会影响葡萄酒陈酿的能力?

糖、酸和酚类与水的比例是葡萄酒陈酿程度的关键决定因素&#xff0c;收获前葡萄中的水分越少&#xff0c;产生的葡萄酒就越有可能具有一定的陈酿潜力。那么葡萄品种、气候和葡萄栽培实践的过程就相当重要了&#xff0c;对陈酿的时间发挥了重要的作用。皮较厚的葡萄品种&#xf…

C语言给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)

这个题目要求的输出是一串数字&#xff01;&#xff01;&#xff01; 不是下面&#xff1a;输入在一行中给出 10 个非负整数&#xff0c;顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50&#xff0c;且至少拥有 1 个非…

Python自动化测试之破解图文验证码

对于web应用程序来讲&#xff0c;处于安全性考虑&#xff0c;在登录的时候&#xff0c;都会设置验证码&#xff0c; 验证码的类型种类繁多&#xff0c;有图片中辨别数字字母的&#xff0c;有点击图片中指定的文字的&#xff0c;也有算术计算结果的&#xff0c;再复杂一点就是滑…

软考人数已超500万!请重视!

2020年40万&#xff0c;2021年94万&#xff0c;2022年129万&#xff0c;2023年软考报考人数已超500万&#xff01;2年时间直翻10倍&#xff01;如此火爆原因是什么&#xff1f; 不是打广告&#xff01;不是打广告&#xff01;不是打广告 千万不要上了”黑心培训结构“当&#x…

App的回归测试,有什么高效的测试方法?

直接抛出观点&#xff1a;高效的测试方法当然有&#xff0c;那就是采用【接口自动化】。 一、回归测试&#xff0c;测哪些东西 回归测试是软件测试过程中的一个重要的环节&#xff0c;如果说冒烟测试是对软件质量的抽检&#xff0c;那么回归测试就是保证软件质量的最后一道屏障…

集合01 - Java

集合 1、数组的不足2、集合3、集合的框架体系&#xff08;背&#xff09;CollectionMap 1、数组的不足 前面我们保存多个数据使用的是数组&#xff0c;那么数组有不足的地方&#xff0c;我们分析一下。 数组&#xff1a; 长度开始时必须指定,而且一旦指定&#xff0c;不能更改…

Linux环境变量与命令行参数

Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种…

C/C++,优化算法——使用遗传算法的旅行商问题(traveling-salesman-problem)的源程序

1 文本格式 #include <bits/stdc.h> #include <limits.h> using namespace std; // Number of cities in TSP #define V 5 // Names of the cities #define GENES ABCDE // Starting Node Value #define START 0 // Initial population size for the algorith…

【算法题】一种字符串压缩表示的解压(js)

输入&#xff1a;2dff 输出 !error 两个d不需要压缩&#xff0c;故输入不合法 输入:4eA 输出:!error 全部由小写英文字母组成&#xff0c;压缩后不会出现&#xff0c;故输出不合法 function solution(str) {const error "!error";// 只能包含小写字母和数字 [^a-z0…