XSS 跨站脚本攻击(XSS)原理与防御
一、XSS 概述
1. 基本概念
- 全称: Cross Site Scripting(跨站脚本攻击),简称 XSS。
- 本质: 前端漏洞,主要利用 JavaScript 代码执行。
- 产生原因: 网站对用户输入过滤不足,导致恶意脚本在页面显示并执行。
2. 核心机制
- 输入输出特征: 必须存在数据交互的输入输出点。
- 执行条件: 服务器未严格过滤用户输入的恶意脚本。
- 触发方式: 浏览器直接执行注入的 JavaScript 代码。
3. 典型场景
- 数据交互点: GET/POST 参数、HTTP Headers。
- 输出点: 用户资料页、关键词标签、富文本编辑器等。
4. XSS 分类
- 反射型(非持久型): 恶意脚本通过 URL 参数即时触发。
- 存储型(持久型): 恶意脚本存储在服务器端持续影响。
- DOM 型: 完全在客户端完成攻击,不经过服务器。
- 特殊类型: mXSS(突变 XSS)、UXSS(通用 XSS)、Flash XSS、UTF-7 XSS。
5. 危害
- 信息窃取: 盗取用户 Cookie、会话凭证。
- 身份冒用: 利用被盗身份执行操作。
- 恶意传播: 对访问者进行病毒侵害。
- 扩展危害: 权限维持、钓鱼攻击、浏览器劫持。
二、XSS 攻击原理与示例
1. 攻击原理
- 本质: 通过网页开发漏洞注入恶意指令代码到网页。
- 执行方式: 用户加载并执行攻击者构造的恶意网页程序。
- 攻击媒介: 不仅限于 JavaScript,还包括 Java、VBScript、ActiveX、Flash 等。
- 攻击后果: 获取更高权限、窃取私密内容、会话和 cookie 等敏感信息。
2. 漏洞产生原理
- 关键条件:
- 输入点:网页接受用户输入(如搜索框)。
- 输出点:将输入内容直接输出到页面源代码中。
- 攻击过程:
- 将正常输入替换为 JS 代码。
- 浏览器渲染时会将 JS 代码识别并执行。
- 示例:搜索关键词显示在页面源代码中,若替换为
<script>alert(1)</script>则会被执行。
3. 本地漏洞演示
- 反射型 XSS 示例:
$code = $_GET[];
;


