XSS Cross-Site Scripting 跨站脚本

把恶意 JavaScript 注入到合法网站,让其他用户的浏览器替攻击者执行代码的注入攻击

XSS 不攻击服务器,攻击的是访问这个网站的其他用户。一旦执行,攻击者能读 cookie、劫持 session、伪造请求、改页面骗用户输密码。

三大变种

变种恶意脚本存哪触发方式典型场景
Stored XSS服务器(数据库)受害者访问普通页面就触发评论区、论坛、留言板被注入 <script>
Reflected XSSURL/请求参数里受害者点恶意链接才触发钓鱼链接 ?q=<script>... 被服务端原样回显
DOM-based XSS不经服务器,纯前端浏览器执行 JS 把不安全数据塞进 DOM前端用 innerHTML 拼接 location.hash

Stored 最致命(被动触发、影响所有访客),DOM-based 最难检测(服务器日志看不到,WAF 也拦不住)。

攻击者拿到 XSS 能干什么

  • 偷 cookie、session token → 接管账号
  • 伪造请求(CSRF 升级版)
  • 键盘记录、表单劫持
  • 改页面骗用户输信用卡
  • 加载更多 payload(BeEF 框架)

防御

手段解决什么
输出转义(HTML escape)< 变成 &lt;,最根本的修法
Content Security Policy(CSP)浏览器层面禁掉内联脚本和外部脚本源
HttpOnly cookieJS 读不到 session cookie
框架默认安全(React、Vue)默认转义,除非你主动用 dangerouslySetInnerHTML
输入校验减少入口,但不能替代输出转义

关联

  • OWASP Top 10 长期上榜
  • 属于 注入攻击 大类(和 SQL injection 同源思想:数据被当代码执行)