当前位置: 首页 > news >正文

XSS漏洞学习总结

XSS漏洞分类

一、反射型 XSS(Reflected XSS)

反射型 XSS 是最常见的 XSS 类型之一,也被称为 “非持久型 XSS”。其核心特点是恶意脚本不会被存储在服务器端,而是通过诱骗用户点击包含恶意脚本的链接(如 URL 参数),当服务器接收到请求后,将恶意脚本 “反射” 回用户的浏览器并执行。

典型场景
  • 搜索框:用户输入的内容直接作为 URL 参数返回在页面中,若未过滤,可能触发反射型 XSS;
  • 错误页面:当 URL 中包含错误信息参数时,若直接显示在页面上,可能被注入脚本。
特点
  • 恶意脚本仅在单次请求中生效,不会被长期存储;
  • 依赖用户主动点击恶意链接,攻击成功率相对较低;
  • 通常与社会工程学结合使用(如伪装成可信链接)。

二、存储型 XSS(Stored XSS)

存储型 XSS 也被称为 “持久型 XSS”,其核心特点是恶意脚本会被永久存储在服务器端(如数据库、评论区、用户资料等),当其他用户访问包含恶意脚本的页面时,脚本会被自动加载并执行。

典型场景
  • 论坛 / 博客评论区:攻击者在评论中插入脚本,所有查看该评论的用户都会受到影响;
  • 用户资料页:攻击者在个人简介中注入脚本,当他人查看其资料时触发;
  • 消息系统:恶意脚本被存储在私信中,接收者查看时执行。
特点
  • 恶意脚本长期存储在服务器,影响范围广(所有访问该页面的用户);
  • 攻击隐蔽性强,无需诱骗用户点击特定链接,危害更大;
  • 常见于用户可输入内容并公开展示的功能(如社交平台、电商评价)。

三、DOM 型 XSS(DOM-based XSS)

DOM 型 XSS 与前两种类型的核心区别是:恶意脚本的执行不依赖服务器的响应,而是完全在客户端的 DOM(文档对象模型)中处理。攻击者利用页面中 JavaScript 对 DOM 的操作漏洞,将恶意脚本注入到 DOM 中,导致浏览器执行。

典型场景
  • 前端路由:页面通过 URL 哈希(#后的内容)动态加载内容,若直接将哈希值插入 DOM,可能触发 DOM 型 XSS;
  • 客户端数据处理:JavaScript 从URL 参数中读取数据并渲染到页面,若未过滤,可能存在漏洞。
特点
  • 恶意脚本的注入和执行完全在客户端完成,服务器端无法感知;
  • 漏洞根源在于前端 JavaScript 代码对用户输入的处理不当,而非服务器逻辑;
  • 难以通过服务器端过滤防御,需在前端代码中加强输入验证和输出编码。

常见的绕过技巧

过滤script字符:

(1)可尝试使用大小写混合的方法绕过

<ScRiPt>alert(1)</ScRiPt>

(2)将字符转换为编码进行绕过

<scrip&#x74>alert(1)</scrip&#x74>  //用HTML实体编码替换字母(t的实体是&#x74)

 (3)利用href属性的<a>标签

<a href="javascript:alert(1)">点击我</a>
<a href="javascript&#58;alert(1)">点击我</a> //冒号用实体编码&#58

过滤“<”,“>”字符

(1)尝试使用事件属性(如onclickonerror等)

onerror=alert(1)
onclick=alert(1)

过滤alert字符

(1)可使用相同功能的函数代替

<script>confirm(1)</script> 
<script>prompt(1)</script>   
<script>console.log(document.cookie)</script>

其他特殊技巧

闭合现有标签

若输入位置处于已有标签的属性中(<input value="用户输入">),可闭合现有标签并注入新标签

/*假设输入位置:*/<input value="用户输入">,
/*输入以下内容 :*/"><script>alert(1)</script><"
/*结果变为 */<input value=""><script>alert(1)</script><">

http://www.lryc.cn/news/593786.html

相关文章:

  • 基于Scrapy-Redis的分布式爬虫系统:工业级实现与深度优化
  • XSS漏洞总结
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘pillow’问题
  • 从零手写红黑树(C++实现详解)
  • 【工具变量】地级市城市包容性绿色增长数据(2011-2023年)
  • [FFmpeg] AVFormatContext、AVInputFormat、AVOutputFormat | libavformat
  • 语义熵怎么增强LLM自信心的
  • MyBatis动态SQL全解析:五大核心标签实战指南
  • IIS部署 .net项目
  • 新华三ACG身份验证实验
  • Linux操作系统之线程(三)
  • JavaScript基础语法和简单数据结构
  • 响应式单位rpx及搭配使用UI产品工具
  • Java-Lambda表达式
  • Ceph存储阈值调整:优化nearfull_ratio参数
  • Vue组件化开发小案例
  • lvs 集群技术
  • LVS技术知识详解(知识点+相关实验部署)
  • sql练习二
  • MySQL练习3
  • Linux内核设计与实现 - 第6章 内核数据结构
  • [AI风堇]基于ChatGPT3.5+科大讯飞录音转文字API+GPT-SOVITS的模拟情感实时语音对话项目
  • 一动一静皆消耗——IC设计之低功耗技术(Low Power Design)
  • Linux C 信号操作
  • 单稳态触发器Multisim电路仿真——硬件工程师笔记
  • CS231n-2017 Lecture3线性分类器、最优化笔记
  • 深度解析 rag-vector-agent-semantic-kernel:基于 Semantic Kernel 的 Agentic RAG 实践
  • 关于Vuex
  • web.m3u8流媒体视频处理
  • 巧用Callbre RVE生成DRC HTML report及CTO的使用方法