17、XSS——session攻击

news2024/11/30 5:38:47

文章目录

  • 一、session攻击简介
  • 二、主要攻击方式
    • 2.1 预测
    • 2.2 会话劫持
    • 2.3 会话固定

一、session攻击简介

  session对于web应用是最重要,也是最复杂的。对于web应用程序来说,加强安全性的首要原则就是:不要信任来自客户端的数据,一定要进行数据验证以及过滤,才能在程序中使用,再保存到数据层。然而,为了维持来自同一用户的不同请求之间的状态,客户端必须要给服务器端发送一个唯一的身份标识符(session ID)。很显然,这和前面提到的安全原则是矛盾的,但是没有办法,http协议是无状态的,为了维持状态,别无选择。由此可以看出,web应用程序中最脆弱的环节就是session,因为服务器端是通过来自客户端的一个身份标识来认证用户的,所以session是web应用程序中最需要加强安全性的环节。

二、主要攻击方式

  基于session的攻击有很多种方式。大部分的手段都是首先通过捕获或固定合法用户的session,然后冒充该用户来访问系统。也就是说,攻击者至少必须要获取到一个有效的session标识符,用于接下来的身份验证。
  攻击者至少可以通过以下三种方式来获取一个有效的session标识符:

  • 预测
  • 捕获(劫持)
  • 固定

2.1 预测

  原理:会话预测这种方式需要攻击者猜测出系统种使用的有效的session标识符(php中格式为PHPSESSID=1234),类似暴力破解。目前会话预测这种攻击方式基本上不太可能成功。因为:

  • PHP生成随机的session id往往是极其复杂的并且难以被预测
  • PHP生成session字符串无任何规律和顺序

在这里插入图片描述

2.2 会话劫持

  含义:通过窃取合法用户session ID后,使用该session ID登录目标账户的攻击方法。会话劫持最重要的部分就是取得一个合法的会话标识来伪装成合法用户。
  攻击步骤:

  1. 目标用户需要先登录站点;
  2. 登陆成功后,该用户会得到站点提供的一个会话标识session ID;
  3. 攻击者通过某种攻击手段捕获session ID;
  4. 攻击者通过捕获的session ID访问站点即可获得目标用户合法会话。

  会话劫持示意图如下:
在这里插入图片描述

  中间人攻击(Man-in-the-MiddleAttack,简称”MIMT攻击“):是一种通过窃取或篡改通信物理、逻辑链路间接完成攻击行为的网络攻击方式。攻击者与通信的两端分别创建独立的联系,并交换其所收到的数据,是通信的两端认为它们正通过一个私密的连接与对方直接对话,实际上整个会话都被攻击者完全控制。这个被攻击者控制的通信节点就是所谓的”中间人“。
  中间人攻击有两种常见的形式:

  • 基于监听的信息窃取
  • 基于监听的身份冒认
    中间人攻击示意图:
    在这里插入图片描述

  中间人攻击难以防御的原因:

  • 攻击者在窃听时,一般网络连接仍然能正常运行,不会断线,因此很少有人会主动发现;
  • 受害者电脑上不会被安装木马或恶意软件,难以被杀毒软件发现;
  • 攻击者在欺骗网络协议时,虽然会留下蛛丝马迹,但由于网络设备不会保留太多记录,事后难以追踪;
  • 绝大多数的网络协议,仍基于”对方的数据是安全可靠“的假设来运作,这导致攻击者有太多漏洞可以利用进行欺骗网络设备、伪装成中间人。

2.3 会话固定

  含义:诱骗受害者使用攻击者指定的会话标识(session ID)的攻击手段。让合法yoghurt使用攻击者预先设置的session ID进行登录,从而使web不再进行生产新的session ID,导致攻击者预先设置的session ID变成了合法桥梁。

会话固定也可以看成会话劫持的一种类型,因为会话固定攻击的主要目的同样是获取目标用户的合法会话,不过会话固定还可以是强迫受害者使用攻击者设定的一个有效会话,以此来获得用户的敏感信息。

  攻击步骤:

  1. 攻击者通过某种手段重置目标用户的session ID,然后监听用户会话状态;
  2. 目标用户携带攻击者设定的session ID登录站点;
  3. 攻击者通过session ID获得合法会话。

在这里插入图片描述

  web接收session ID机制
  首先检查携带cookie是否含有session ID;若没有则再检查get、post数据中是否含有,若有则使用此数据;没有才会使系统生成一个session ID发给客户端。

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

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

相关文章

Python---面向对象的综合案例

案例1:定义学员信息类,包含姓名、成绩属性,定义成绩打印方法(90分及以上显示优秀,80分及以上显示良好,70分及以上显示中等,60分及以上显示合格,60分以下显示不及格) 学员…

Android--Jetpack--Databinding详解

不经一番寒彻骨,怎得梅花扑鼻香 一,定义 DataBinding, 又名数据绑定,是Android开发中非常重要的基础技术,它可以将UI组件和数据模型连接起来,使得在数据模型发生变化时,UI组件自动更新。是 MVVM 模式在 An…

Path Finder for Mac:超越系统的文件管理利器

Path Finder for Mac是一款卓越的文件管理器,它不仅具备基本的文件浏览、打开、复制和移动等操作功能,还引入了一系列强大的特性,使得用户可以更高效地管理和处理文件。 一、强大的预览功能 Path Finder for Mac支持多种文件格式的预览&…

初级数据结构(二)——链表

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;一&#xff09;——顺序表 | NULL 下一篇-> 1、链表特征 与顺序表数据连续存放不同&#xff0c;链表中每个数据是分开存放的&#xff0c;而且存放的位置尤其零散&#…

Qt进程和线程

一、进程 在设计一个应用程序时,有时不希望将一个不太相关的功能集成到程序中,或者是因为该功能与当前设计的应用程序联系不大,或者是因为该功能已经可以使用现成的程序很好的实现了,这时就可以在当前的应用程序中调用外部的程序来实现该功能,这就会使用到进程。Qt应用程序…

文献阅读:基于改进ConvNext的玉米叶片病害分类

文献阅读&#xff1a;基于改进ConvNext的玉米叶片病害分类 CBAM注意力机制模块&#xff1a; 1&#xff1a;通道注意力模块&#xff0c;对输入进来的特征层分别进行全局平均池化&#xff08;AvgPool&#xff09;和全局最大池化&#xff08;MaxPool&#xff09;&#xff08;两个…

Ubuntu系统使用快速入门实践(六)——Ubuntu深度学习环境配置(1)

Ubuntu系统使用快速入门实践系列文章 下面是Ubuntu系统使用系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 Ubuntu系统使用快速入门实践系列文章总链接 下面是专栏地址&#xff1a; Ubuntu系统使用快速入门实践系列文章专栏 文章目录 Ubuntu系统使用快速…

android studio安装说明

一、安装文件下载&#xff1a; Android studio、SDK、NDK下载&#xff1a; https://developer.android.google.cn/ndk/downloads?hlzh-cn 二、双击android studio 安装文件&#xff0c;开始安装&#xff1a; 三、进入安装界面&#xff0c;点击“next”。 四、点击“next”&…

uni-app 微信小程序之加载行政区图

文章目录 1. 实现效果2. 实现步骤 1. 实现效果 2. 实现步骤 使用三方组件 ucharts echarts 高性能跨全端图表组件页面导入引入的三方组件 组件demo代码 <template><view class"qiun-columns"><view class"cu-bar bg-white margin-top-xs"…

Leetcode刷题笔记题解(C++):BM11 链表相加(二)

思路&#xff1a;先对两个链表进行反转&#xff0c;反转求和注意进位运算&#xff0c;求和完成之后再进行反转得到结果 /*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/ #include <cstddef> class Soluti…

STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计

STM32单片机项目实例&#xff1a;基于TouchGFX的智能手表设计&#xff08;2&#xff09;UI交互逻辑的设计 目录 一、UI交互逻辑的设计 1.1 硬件平台的资源 1.2 界面切换功能 ​​​​​​​1.3 表盘界面 1.4 运动界面 ​​​​​​​1.6 设置界面 ​​​​​​​1.7 应…

SpringBoot 与Maven ProFile的使用

SpringBoot 与Maven ProFile的使用 目录结构 dev 开发环境 sit 测试环境 prd 正式环境 maven 配置 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId>&l…

Linux中的输入输出重定向

目录 1.输出重定向 > 2.追加重定向 >> 3.标准 正确/错误 输出重定向 4.输入重定向 < 5.标准输入 0 1.输出重定向 > 将命令执行之后的结果不打印出来&#xff0c;可以输入在另外一个文件当中。 如&#xff0c;我查看文件a.txt 的前3行&#xff0c;然后不显…

【PyTorch】训练过程可视化

文章目录 1. 训练过程中的可视化1.1. alive_progress1.2. rich.progress 2. 训练结束后的可视化2.1. tensorboardX2.1.1. 安装2.1.2. 使用 1. 训练过程中的可视化 主要是监控训练的进度。 1.1. alive_progress 安装 pip install alive_progress使用 from alive_progress i…

Vue 父传子组件传参 defineProps

defineProps 属性&#xff1a;用于接收父组件传递过来的数据。 注意&#xff1a;如果 defineProps 接收的参数名&#xff0c;和已有变量名相同&#xff0c;就会造成命名冲突。 语法格式&#xff1a; // 无限制 const props defineProps([参数名, 参数名]);// 限制数据类型 …

高德地图vue实现热力图(缩放时展示不同数据)

高德地图插件引入省略。。。 效果图 1.1&#xff1a;初始化时&#xff0c;按省进行统计 1.2&#xff1a;地图放大一定程度时&#xff0c;按市进行统计 2. 同一个经纬点可支持展示两个数据 代码实现 <template><div class"infringement-map"><di…

西南科技大学C++程序设计实验七(继承与派生二)

一、实验目的 1. 掌握多继承程序设计 2. 掌握虚基类编程 3. 拓展学习可视化程序设计中的继承与派生应用 二、实验任务 重点:掌握虚基类的定义与实现,拓展其功能。 阅读分析、完善程序。下面程序(1)与程序(2)分别是没有使用虚基类和使用虚基类的代码,其中A是最上层基…

MA营销自动化如何助力商家实现精准营销?

惟客数据 MAP 是一个跨渠道和设备的自动化营销平台&#xff0c;允许接触点编排个性化旅程&#xff0c;通过短信、社交推送等方式为您的客户创建无缝的个性化体验&#xff0c;加强客户关系并赢得忠诚度。可与惟客数据CDP 产品无缝配合使用&#xff0c;通过数据驱动做出更实时&am…

javaee实验:文件上传及拦截器的使用

目录 文件上传ModelAttribute注解实验目的实验内容实验过程项目结构编写代码结果展示 文件上传 Spring MVC 提供 MultipartFile 接口作为参数来处理文件上传。 MultipartFile 提供以下方法来获取上传的文件信息&#xff1a;  getOriginalFilename 获取上传的文件名字&#x…

ACM32F403/F433 12 位多通道,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理&#xff0c;支持单精度FPU处理浮点数据&#xff0c;同时还支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升应用的…