概述
带全部权限的第三方 iframe 一旦被攻陷,便可导航顶层窗口或读取存储。sandbox 让 iframe 默认失去一切未显式授予的能力,再配合 frame-src 白名单,可把嵌入内容的权限压到最小。
关键步骤
- 仅添加嵌入实际需要的 sandbox 令牌。
- 绝不包含 allow-top-navigation 或 allow-top-navigation-by-user-activation。
- 在 CSP 的 frame-src 中限定具体嵌入来源。
- 为嵌入失效时提供清晰的回退提示。
验证
- 嵌入无法导航顶层窗口。
- 仅指定来源可被加载。
- 嵌入所需的最小功能仍正常。
- 发生错误时用户看到明确提示。
注意事项
- 当 iframe 与父页同源时,allow-scripts 加 allow-same-origin 可能使沙箱被逃脱。
- 某些第三方嵌入需要过多令牌,此时沙箱保护有限,应作为有意识的风险决策。
<iframe
src="https://widget.example.com/embed"
sandbox="allow-scripts allow-forms allow-popups"
referrerpolicy="no-referrer"
loading="lazy"></iframe>