一个 <iframe> 可以在您的页面中嵌入另一个 HTML 文档(例如地图、视频、支付小部件或不受信任的用户内容)。由于嵌入的页面可以运行自己的脚本,sandbox 属性是安全地嵌入它的关键。
html
<iframe
src="https://example.com/widget"
=
=
=
= =
>
sandbox 不带任何值时应用最大限制:无脚本、无表单、无弹出窗口,将内容视为唯一源。然后通过列出令牌来选择性地重新启用功能:
<iframe sandbox></iframe> <!-- locked down: scripts disabled, etc. -->
<iframe sandbox="allow-scripts allow-forms allow-popups"></iframe>
常见令牌:
allow-scripts — 让它运行 JavaScript。allow-forms — 让它提交表单。allow-same-origin — 保持其源(没有此标志,它是 null 源,会阻止存储/cookie)。allow-popups、allow-modals、allow-top-navigation。安全提示: 组合 allow-scripts 和 allow-same-origin 会允许该框架删除自己的沙箱(如果它是同源的)— 对于不受信任的内容,请避免这种组合。
<iframe
referrerpolicy="no-referrer"
allow="camera 'none'; geolocation 'none'"
></iframe>
iframe 嵌入您不控制且不应完全信任的第三方或用户生成的内容。sandbox(默认拒绝,仅允许所需内容)加上 referrerpolicy/allow 让您能够限制该内容 — 防止它运行不需要的脚本、导航您的页面或访问设备功能。
添加 title 以便于访问,添加 loading="lazy" 以提高性能。