XSS 攻击原理、类型与实战防御指南
在 Web 安全领域,XSS(Cross-Site Scripting,跨站脚本攻击)一直是排名第一的高危漏洞类型。无论是大型互联网公司,还是中小企业网站,都深受其害。XSS 攻击不仅能窃取用户 Cookie、伪造身份,还能篡改页面内容、传播恶意代码,甚至引发大规模用户数据泄露。
本文将从 XSS 的本质原理出发,深入讲解三大类型 XSS 的攻击方式、触发条件、绕过技巧,并给出企业可落地的防御方案,帮助前端开发者与安全工程师建立完整的 XSS 攻防体系。
一、XSS 攻击的本质:把恶意脚本注入到别人的页面里
XSS 攻击的核心原理是:
攻击者通过各种方式,将恶意 JavaScript 代码注入到目标网站的页面中,当用户访问该页面时,恶意代码在用户浏览器中执行,从而实现攻击目的。
一句话总结:
XSS = 注入 + 执行
常见攻击目的包括:
- 窃取用户 Cookie(document.cookie)
- 劫持用户会话
- 伪造用户操作
- 篡改网页内容
- 传播蠕虫
- 盗取用户密码、银行卡信息等
二、XSS 的三大类型:反射型、存储型、DOM 型
XSS 通常分为三大类型,每种类型的攻击方式、危害程度和防御难度都不同。
1. 反射型 XSS(Reflected XSS)—— 一次性攻击
反射型 XSS 是最常见、最容易发现的类型。
- 特点:恶意代码通过 URL 传入、服务器将恶意代码'反射'回页面、仅在当前请求中执行,不存储在服务器、通常需要诱骗用户点击恶意链接。
- 典型场景:搜索框、错误页面、参数展示页面。
攻击示例:
http://example.com/search?q=<script>alert(document.cookie)</script>
如果服务器未对 q 参数进行过滤,页面会执行脚本,弹出 Cookie。
- 危害:盗取用户 Cookie、钓鱼攻击、会话劫持。
2. 存储型 XSS(Stored XSS)—— 最危险的 XSS
存储型 XSS 是危害最大的类型,也叫'持久型 XSS'。
- 特点:恶意代码被存储到服务器数据库、所有访问该页面的用户都会受到攻击、不需要诱骗点击,危害面极大。
- 典型场景:评论区、留言板、用户资料、文章内容。
攻击示例: 在评论框输入:
<script>alert(document.cookie)</script>
如果服务器未过滤,该评论会被存入数据库,所有访问该页面的用户都会执行脚本。


