沙箱
以下内容嵌入了一个不受信任的网页,其中包含所有限制
<iframe sandbox src="http://example.com/"></iframe>
要允许页面运行脚本并提交表单,请将 allow-scripts
和 allow-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 标头可以用来缓解这种攻击。