XSS(跨站脚本攻击)指攻击者把恶意脚本注入到页面中,当其他用户浏览该页面时脚本在其浏览器中执行,从而窃取 Cookie、伪造操作或劫持会话。常见类型有:存储型(恶意内容入库,危害最大)、反射型(通过 URL 参数诱导点击)、DOM 型(前端脚本不安全地操作 DOM 导致)。

防御核心是对「一切不可信输入」做处理:

  • 输出编码:向 HTML/属性/JS 上下文输出用户数据时进行转义,模板引擎默认转义要开启;
  • 设置 Cookie 为 HttpOnly,让 JS 读不到会话凭证;
  • 配置 CSP(Content-Security-Policy)限制脚本来源;
  • 富文本场景用白名单过滤库(如 DOMPurify);
  • 避免使用 innerHTMLeval 直接拼接不可信数据。

易错点:只做输入过滤不可靠,因为同一数据在不同输出上下文需要的编码不同。追问可涉及 CSP 配置细节与 Vue 中 v-html 的风险。