XSS攻击

XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的前端攻击方式,攻击者通过注入恶意脚本代码,让受害者浏览器执行这些代码,进而达到窃取 Cookie、劫持会话、伪造操作等目的。


🧨 一、XSS 是什么?

XSS 攻击的核心:

利用网站对用户输入内容未做适当过滤或转义,注入恶意脚本,并在其他用户浏览页面时被执行。

这些脚本通常是 JavaScript,但也可以是 HTML、Flash 等。


🧠 二、XSS 攻击的三种类型

类型 简述 示例说明
反射型 XSS 恶意代码存在于 URL 中,用户点击链接就执行。常用于钓鱼。 用户访问恶意链接:https://a.com?msg=<script>alert(1)</script>
存储型 XSS 恶意脚本被“存储”在数据库中,其他用户访问页面时被执行。 在论坛发帖或评论中注入脚本,其他人浏览时触发。
DOM 型 XSS 利用前端 JS 处理用户输入时没有做校验,直接插入 DOM。 JS 中读取 location.hash 并插入页面时未转义。

📦 三、XSS 能做什么?


🛡️ 四、XSS 如何防御?

防御手段 说明
输出编码 所有用户输入展示在 HTML 中前都应转义(如 &&amp;<&lt;
输入校验 限制输入长度、字符集、禁止脚本标签等敏感内容
使用 CSP 内容安全策略,禁止 inline script 执行,限制加载源
Cookie 设置 HttpOnly 防止 JS 读取 Cookie
框架自动防御机制 如 Vue、React、Angular 会自动转义变量插入
过滤 HTML 标签 使用白名单过滤器,如 DOMPurify、xss-clean

💡 举例:简单的 XSS 攻击代码

<input type="text" value="<script>alert('XSS')</script>">

如果没有过滤,上面代码会让页面弹出一个窗口。


🚨 五、如何测试和发现 XSS 漏洞?


✅ 总结一句话

XSS 是攻击者将恶意脚本注入网页中,让用户在不知情的情况下执行,从而造成信息泄露、账户劫持等问题。防御的关键是“永远不要相信用户输入”,所有输出都要做转义和校验。