06 XSS 有哪几种类型?分别怎么测试和防御?
2026/9/17...大约 2 分钟
06|XSS 有哪几种类型?分别怎么测试和防御?
开场三种类型用场景讲清楚——XSS 的本质是攻击者代码在受害者浏览器里拥有了网站的权限。
回答思路
第一步:三种类型用场景讲清楚
| 类型 | 场景 | 特点 |
|---|---|---|
| 反射型 | payload 在 URL 参数里,受害者点恶意链接时被执行(搜索框回显) | 一次性的 |
| 存储型 | payload 存进数据库,所有看到这条数据的用户都被执行(评论区、昵称) | 危害最大 |
| DOM 型 | 前端 JS 自己把不可信数据写进页面(innerHTML),不经过服务端 | 纯前端 |
前两种都讲服务端,能分清 DOM 型纯前端,是知识准确性的体现。
第二步:危害讲透
偷 cookie(会话劫持)、键盘记录、钓鱼篡改页面、蠕虫传播。
第三步:测试方法
在输入点提交 <script>alert(1)</script> 看是否执行;被过滤就换姿势——大小写、编码绕过、img onerror 事件标签。XSS 测试的本质是和过滤规则的攻防,会讲两三种绕过姿势说明真玩过。
第四步:防御分层
- 输出编码(按上下文转义——HTML 上下文转 HTML 实体、JS 上下文转 JS)
- 输入校验白名单
- CSP 内容安全策略(限制脚本来源,纵深防御)
- cookie 加 HttpOnly(脚本读不到,减轻会话劫持)
能讲到 CSP 和 HttpOnly 的是现代防御认知。
收尾:测试验证
修复后重放原 payload、再测编码绕过的变体(防止只修了直给的那一种)、沉淀用例——XSS 过滤最常见「按下葫芦浮起瓢」,变体回归必须做。
考察重点
| 维度 | 说明 |
|---|---|
| 企业动机 | XSS 和注入并列的必考双雄——存储型 XSS 在 UGC 业务是高发线上事故源 |
| 过线标准 | 三类型场景级区分 + 输出编码的防御认知 |
| 区分度 | DOM 型讲清、绕过姿势两三种、CSP/HttpOnly 齐备的是实战派 |
| 加分项 | 按上下文编码的细节(HTML 和 JS 上下文转义规则不同) |
| 减分项 | 防御说「过滤 script 标签」——单一黑名单过滤正是被绕过的主因 |
来源
整理自知识星球帖《面试情报 05|安全测试 20 题》,返回题库。