XSS三种类型总结:反射型、存储型、DOM型
2026/7/31 9:11:07 网站建设 项目流程

1. XSS是什么

XSS(Cross-Site Scripting,跨站脚本攻击)是指攻击者往网页中注入恶意脚本,当其他用户浏览时,脚本在浏览器中执行。

能干什么:

窃取 Cookie(登录凭证)
劫持会话
钓鱼攻击
篡改页面内容

2. 反射型 XSS

原理:恶意代码在 URL 参数中,服务器未过滤直接返回,浏览器执行。

特点:

不存储,一次性
需要诱骗用户点击恶意链接
常见于搜索框、URL 参数反射

经典 Payload:

<script>alert(1)</script> < img src=x onerror=alert(1)>


测试方法:在 URL 参数或输入框输入 Payload,观察是否弹窗。

防御:输出编码(< → &lt;,> → &gt;)

3. 存储型 XSS

原理:恶意代码被存储到服务器的数据库中,任何访问该页面的用户都会触发。
特点:

持久存储,不主动删除一直在
自动触发,无需诱骗
影响面大,可能成百上千用户中招
常见于留言板、评论区、个人资料

经典 Payload:

<script>alert(1)</script> < img src=x onerror=alert(1)>

测试方法:在留言板输入 Payload,提交后刷新页面,观察是否再次弹窗。

防御:输出编码 + 输入过滤


4. DOM 型 XSS

原理:前端 JavaScript 操作 DOM 树时,把用户可控的输入写入了页面,导致恶意代码执行。不经过服务器,只在客户端发生。

特点:

纯前端漏洞,不经过服务器
恶意代码在 URL 中(如 # 后面的值)
常见于‘document.write、innerHTML、eval、location.hash’

经典 Payload:

https://example.com/#< img src=x onerror=alert(1)>

测试方法:修改 URL 中 # 后面的值,观察页面是否执行恶意代码。

防御:

避免使用 document.write、innerHTML、eval 等危险函数
使用 textContent 或 innerText 代替 innerHTML
对用户输入进行转义

5. 防御 XSS


输出编码,将 < 转成 &lt;,> 转成 &gt;,让浏览器不解析为标签
CSP,限制可执行的脚本来源
HttpOnly Cookie,设置 HttpOnly,禁止 JavaScript 读取

免责声明:本文所有内容仅用于网络安全学习与研究,严禁用于任何非法用途。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询