← 中文资源

简体中文版本

用 sandbox 加固第三方 iframe

把嵌入 iframe 收敛到所需的最小令牌集合,绝不授予顶层导航权限,并结合严格的 CSP 允许清单。

阅读英文原文

概述

带全部权限的第三方 iframe 一旦被攻陷,便可导航顶层窗口或读取存储。sandbox 让 iframe 默认失去一切未显式授予的能力,再配合 frame-src 白名单,可把嵌入内容的权限压到最小。

关键步骤

  1. 仅添加嵌入实际需要的 sandbox 令牌。
  2. 绝不包含 allow-top-navigation 或 allow-top-navigation-by-user-activation。
  3. 在 CSP 的 frame-src 中限定具体嵌入来源。
  4. 为嵌入失效时提供清晰的回退提示。

验证

  • 嵌入无法导航顶层窗口。
  • 仅指定来源可被加载。
  • 嵌入所需的最小功能仍正常。
  • 发生错误时用户看到明确提示。

注意事项

  • 当 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>