XSS(跨站脚本攻击)指攻击者把恶意脚本注入到页面中,当其他用户浏览该页面时脚本在其浏览器中执行,从而窃取 Cookie、伪造操作或劫持会话。常见类型有:存储型(恶意内容入库,危害最大)、反射型(通过 URL 参数诱导点击)、DOM 型(前端脚本不安全地操作 DOM 导致)。
防御核心是对「一切不可信输入」做处理:
- 输出编码:向 HTML/属性/JS 上下文输出用户数据时进行转义,模板引擎默认转义要开启;
- 设置 Cookie 为
HttpOnly,让 JS 读不到会话凭证; - 配置 CSP(Content-Security-Policy)限制脚本来源;
- 富文本场景用白名单过滤库(如 DOMPurify);
- 避免使用
innerHTML、eval直接拼接不可信数据。
易错点:只做输入过滤不可靠,因为同一数据在不同输出上下文需要的编码不同。追问可涉及 CSP 配置细节与 Vue 中 v-html 的风险。