摘要本文基于 DVWA 靶场 Low 安全等级完整复现反射型 XSS 漏洞的利用过程。实验环境采用小皮面板搭建 Apache 2.4.39 与 MySQL 5.7.26靶场安全等级设为 Low无任何输入过滤。漏洞成因在于服务端直接获取用户输入并输出至 HTML 页面未做过滤与转义导致恶意脚本随 URL 参数反射执行。通过输入scriptalert(dvwa)/script成功触发弹窗验证漏洞存在。文章同时对比反射型、存储型与 DOM 型 XSS 的差异并给出输出编码、输入过滤、CSP 策略、HttpOnly 等四类防御方案帮助读者从原理到防御系统掌握反射型 XSS。免责声明本次所有实验均在本地自建的 DVWA 脆弱靶场中完成仅用于 Web 安全原理学习。网络攻击属于违法行为请勿对未授权的网站进行任何渗透测试。一、实验环境• 环境工具小皮面板• 服务版本Apache 2.4.39 MySQL 5.7.26• 靶场DVWADamn Vulnerable Web Application• 安全等级Low无过滤新手入门首选小皮面板服务启动状态Apache与MySQL正常运行DVWA 是一款开源的、存在多种已知漏洞的 Web 靶场集成 SQL 注入、XSS、文件上传、命令注入等常见 Web 漏洞适合信息安全入门学习、CTF 基础练习。二、登录靶场 配置安全等级DVWA 默认登录账号admin默认密码password登录成功后进入DVWA主页左侧是所有漏洞模块菜单找到左侧 DVWA Security 选项在安全等级下拉框中选择 Low 并点击 Submit 提交Low 级别不会对用户输入做任何过滤方便我们直接测试基础反射 XSS三、反射型XSS原理介绍反射型 XSSReflected XSS也叫非持久型 XSS。核心特点恶意 JS 代码不会保存到数据库而是携带在 URL 参数中访问页面时直接反射执行一次性触发。与存储型 XSS 的区别存储型会把恶意代码写入数据库所有访问页面的用户都会触发。下面是反射型、存储型与 DOM 型三种 XSS 的对比对比维度反射型 XSS存储型 XSSDOM 型 XSS恶意代码存储位置不存储代码在 URL 参数中存储在服务器数据库不存储代码在页面 DOM 中触发方式用户点击携带恶意参数的链接访问被注入恶意代码的页面浏览器解析 DOM 时触发攻击持续性一次性不持久持久化长期有效一次性不持久典型攻击场景钓鱼链接、邮件诱导点击留言板、评论区、用户资料前端 JS 动态渲染页面检测难度较低较高较高三者核心区别反射型 XSS 恶意代码不落库随 URL 参数一次性反射执行存储型 XSS 将恶意代码写入数据库所有访问页面的用户都会触发危害范围最广DOM 型 XSS 不经过服务端恶意代码在浏览器解析 DOM 时执行隐蔽性最强。三者本质都是前端执行了不可信脚本但存储位置与触发链路不同防护侧重点也各有差异。四、漏洞复现步骤在左侧菜单栏选择 XSS (Reflected) 进入反射型 XSS 关卡页面输入框是可控点输入基础 XSS payload点击 Submit 提交成功触发 JS 弹窗漏洞复现成功五、源码简单分析Low级别?php $name $_GET[name]; echo Hello {$name}; ?直接GET获取name参数没有过滤、没有HTML转义用户输入的六、漏洞危害构造恶意链接诱导他人点击窃取用户Cookie伪造页面、制作钓鱼页面欺骗用户结合JS实现会话劫持、页面篡改七、安全修复方案输出编码对用户输出内容做HTML实体转义转义 输入过滤黑名单过滤script、onclick等危险标签与事件部署CSP内容安全策略限制非信任脚本执行重要Cookie设置HttpOnly防止JS读取Cookie八、实验总结本次Low难度反射XSS实验完整走完了从环境启动、靶场配置、漏洞测试到原理分析的流程。漏洞根本成因服务端信任用户输入没有做任何过滤和转义直接将可控内容输出至前端HTML中。后续可以继续练习Medium、High难度学习标签过滤、事件绕过等进阶思路同时区分反射型、存储型、DOM型三种XSS的差异。