只写 sandbox 就等于关死所有功能:浏览器将 iframe 视为“零权限容器”,js 不解析、onclick 失效、fetch 静默失败、network 显示 net::err_blocked_by_response,html 甚至不进入 dom 构建流程;验证方式是 document.queryselector('iframe').sandbox 返回空 domtokenlist [];最低可行配置是 sandbox="allow-scripts",但它仅允许外链脚本执行,仍屏蔽内联事件、内联 script、javascript:void(0) 等,且禁止访问 parent;必须避开 allow-same-origin 和 allow-top-navigation,动态设置 sandbox 属性无效。

只写 sandbox 就等于关死所有功能
直接写 <iframe sandbox src="https://third-party.com/widget.js"></iframe> 或 <iframe sandbox=""></iframe>,浏览器会把 iframe 当作“零权限容器”:JS 不解析、onclick 失效、fetch() 静默失败、Network 面板显示 net::ERR_BLOCKED_BY_RESPONSE。这不是加载慢或报错,是内容被底层拦截——连 HTML 标签都不会进 DOM 构建流程。
验证是否锁死:控制台执行 document.querySelector('iframe').sandbox,返回空 DOMTokenList [] 就说明没开任何权限。
sandbox="allow-scripts" 是第三方嵌入的最低可行配置
广告、统计脚本、图表组件等依赖 JS 的第三方内容,至少要加这个 token 才能跑起来。但它只解禁外链脚本(<script src="https://trusted.example/sdk.js"></script>),不恢复以下能力:
-
onclick="alert(1)"、onload等内联事件处理器仍被静默忽略 -
<script>console.log('inline')</script>内联 script 标签完全不执行 -
javascript:void(0)链接点击无响应 - 子页面调用
parent.document仍被拒绝,即使同源
如果第三方 HTML 含大量内联绑定,仅加 allow-scripts 不够,需推动对方改用 addEventListener;或临时配合 srcdoc 替代 src 来绕过外部加载风险。
组合权限时必须避开两个高危 token
allow-same-origin 和 allow-top-navigation 在第三方场景中基本不该出现:
-
allow-same-origin单独写无效,但和allow-scripts一起用且 src 真同源时,会解锁localStorage、同源fetch()、甚至document.write()—— 这几乎瓦解沙箱隔离。对https://third-party.com加这个,浏览器会忽略它,但暴露你配置疏漏 -
allow-top-navigation允许子页执行top.location.href = 'https://phishing.site',是钓鱼常用手法,生产环境严禁启用 - 常见安全组合:
sandbox="allow-scripts allow-popups"(广告跳转落地页)、sandbox="allow-scripts allow-forms"(嵌入问卷)
动态设置 sandbox 属性在 Chrome 和 Safari 中无效
通过 JS 修改 iframe.sandbox = "allow-scripts" 在 Chromium 和新版 Safari 中会被忽略,控制台可能报 Failed to set the 'sandbox' property on 'HTMLIFrameElement': This property is read-only。沙箱策略只在 iframe 开始加载前生效。
正确做法只有两种:
- 服务端渲染时直接写死:
<iframe sandbox="allow-scripts allow-popups" src="..."></iframe> - 前端动态插入时,用字符串拼接或
innerHTML一次性写入完整标签(注意 XSS 过滤),不能先创建空iframe再补属性
最容易被忽略的是:哪怕你写了 sandbox="allow-scripts",只要第三方资源本身用了 eval()、Function 构造器或内联 handler,依然会失效——这不是配置错了,是它本来就不该被允许。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











