跨站脚本攻击(XSS)的本质是攻击者将恶意脚本注入受害者的浏览器执行环境。仅依赖输入过滤远远不够,内容安全策略(CSP) 提供了浏览器层面的最后一道防线。
一、基于 nonce 的严格 CSP 配置
http
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-abc123'; object-src 'none'; base-uri 'none';服务端在每次响应中生成随机 nonce,仅允许携带该 nonce 的内联脚本执行。即使页面存在注入点,攻击者构造的 <script> 标签因缺少合法 nonce 也会被浏览器直接阻断。
二、配套加固措施
- 为会话 Cookie 设置
HttpOnly与SameSite=Lax - 使用
Trusted Types禁用innerHTML等危险 Sink - 对输出按上下文(HTML/JS/URL)分别编码