我一直在阅读HTML5 sandbox
的{{1}}属性。根据文档,<iframe>
属性允许开发人员有选择地限制可以在sandbox
中执行的操作。沙箱属性纯粹是一种安全措施吗? <iframe>
属性是否允许Web设计人员实现任何新功能?如果是这样,任何人都可以指向任何示例吗?
答案 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,防止链接定位到其他浏览上下文,并且插件受到保护。