iframe sandbox 属性
iframe sandbox 属性 是什么?
iframe sandbox 属性HTML 属性,为 iframe 内容施加额外限制,默认禁用脚本、表单、导航与同源访问,除非显式重新启用。
<iframe> 上的 sandbox 属性由 HTML Living Standard 定义,为嵌入内容应用最小权限策略。当取空值(sandbox="")时,它会禁用脚本、插件、表单提交、顶层导航与同源导航、弹窗、指针锁定、自动播放,以及 Pointer Lock 和 Presentation API,并强制该框架进入唯一的不透明源(unique opaque origin),使其无法读取父页的 Cookie、localStorage 或 DOM。各项能力需通过令牌逐项重新授予——allow-scripts、allow-same-origin、allow-forms、allow-popups、allow-modals、allow-downloads、allow-top-navigation-by-user-activation。
最关键的陷阱在于:同时组合 allow-scripts allow-same-origin 会让框架恢复到其真实源并且能够运行 JavaScript,于是被沙箱包裹的代码可以直接访问自身 DOM,并从某个嵌套框架上移除 sandbox 属性——从而使保护失效。要托管真正不可信的内容,应将其隔离在单独的源上,并将 sandbox 与 Content-Security-Policy: sandbox(它无法被标记语言剥离)以及 Cross-Origin-Opener/Embedder 策略配合使用。沙箱机制支撑着广告、富文本预览和第三方组件的安全渲染;Google 的 Caja 以及 CodePen、JSFiddle 等现代服务都依赖运行在临时源上的沙箱框架,以在不危及宿主页面的前提下运行攻击者可控的代码。
flowchart TD
A[父页面] --> B["<iframe sandbox><br/>嵌入不可信内容"]
B --> C{设置了哪些令牌?}
C -->|"sandbox="" (空值)"| D[不透明源,无脚本,<br/>无表单,无导航]
C -->|仅 allow-scripts| E[脚本运行,仍为<br/>不透明源 - 安全]
C -->|"allow-scripts +<br/>allow-same-origin"| F[真实源 + 脚本:<br/>框架可移除自身<br/>sandbox = 逃逸]
E --> G[添加 CSP: sandbox 响应头<br/>独立源 = 纵深防御]● 示例
- 01
<iframe src="/preview" sandbox="allow-scripts"></iframe> 用于安全渲染不可信的 HTML。
- 02
通过 sandbox="" 嵌入第三方组件,拒绝所有能力。
● 常见问题
iframe sandbox 属性 是什么?
HTML 属性,为 iframe 内容施加额外限制,默认禁用脚本、表单、导航与同源访问,除非显式重新启用。 它属于网络安全的 应用安全 分类。
iframe sandbox 属性 是什么意思?
HTML 属性,为 iframe 内容施加额外限制,默认禁用脚本、表单、导航与同源访问,除非显式重新启用。
如何防御 iframe sandbox 属性?
针对 iframe sandbox 属性 的防御通常结合技术控制与运营实践,详见上方完整定义。