沙箱

以下内容嵌入了一个不受信任的网页,其中包含所有限制

<iframe sandbox src="http://example.com/"></iframe>

要允许页面运行脚本并提交表单,请将 allow-scriptsallow-forms 添加到 sandbox attribute

<iframe sandbox="allow-scripts allow-forms" src="http://example.com/"></iframe>

如果在与父网页相同的域中存在不受信任的内容(例如用户注释),则可以使用 iframe 来禁用脚本,同时仍允许父文档使用 JavaScript 与其内容进行交互。

<iframe sandbox="allow-same-origin allow-top-navigation" src="http://example.com/untrusted/comments/page2">

父文档可以添加事件侦听器并调整 IFrame 大小以适合其内容。这与 allow-top-navigation 一起,可以使沙盒 iframe 看起来是父文档的一部分。

这个沙箱不是消毒输入的替代品,但可以用作深度防御策略的一部分。

另请注意,攻击者可以通过强制用户直接访问 iframe 的源来破坏此沙箱。在内容安全策略的 HTTP 标头可以用来缓解这种攻击。