HTML5 iframe沙箱属性的值

时间:2014-03-29 22:48:55

标签: html5 iframe attributes sandbox

我一直在阅读HTML5 sandbox的{​​{1}}属性。根据文档,<iframe>属性允许开发人员有选择地限制可以在sandbox中执行的操作。沙箱属性纯粹是一种安全措施吗? <iframe>属性是否允许Web设计人员实现任何新功能?如果是这样,任何人都可以指向任何示例吗?

4 个答案:

答案 0 :(得分:10)

嗯,它纯粹是一种安全功能,但 也允许新功能。例如,嵌入第三方(用户)内容(例如HTML文件)。传统上,您需要设置一个单独的域,您可以从该域中提供该内容,但是您可以从任何地方提供服务,并将其视为来自单独的域。

最重要的是,它可以防止这些第三方内容做某些事情,这是你以前无法阻止的:

  • allow-top-navigation:防止它爆发
  • allow-pointer-lock:阻止它将光标作为人质
  • allow-popups:防止它通过弹出窗口突破
  • allow-scripts:只需阻止所有脚本(也可以通过CSP完成)

实际上,sandbox属性与受控CSP标头相结合,可以在安全的环境中运行第三方代码,实现令人难以置信的控制。它还不是100%,但我们已经非常接近了。

答案 1 :(得分:3)

沙箱在测试中实际上非常方便。请考虑以下事项:

<强> tester.html

<script> document.cookie='foo=bar' </script>
<iframe src=testee.html>

<强> testee.html

<script> console.log(document.cookie) </script>

加载tester.html时,您会在控制台"foo=bar"上看到被testee.html转储的内容。

现在添加到iframe sandbox属性并且cookie消失了 - 沙箱为testee.html创建了一个单独的运行时环境,它没有从其他页面获取cookie污染在开发过程中在浏览器中打开。因此,当您需要无菌试验台,但无法或不想清除浏览器缓存时,这是一个快速而简单的解决方案。

答案 2 :(得分:2)

沙箱属性不启用任何额外功能,它仅限制iframe的功能。使用它的唯一原因是作为安全措施。

答案 3 :(得分:2)

iframe sandbox纯粹是一种安全功能。一个好的资源总是W3 HTML5 specification

  

设置属性后,内容将被视为来自唯一的来源,表单,脚本,并且禁用各种可能令人烦恼的API,防止链接定位到其他浏览上下文,并且插件受到保护。