HTML5 iframe沙箱属性问题

时间:2011-07-13 13:35:43

标签: html5 iframe security sandbox

您能否帮我理解HTML5 iframe沙箱属性的Chrome实现允许同源和允许顶级导航?

第一个问题:

例如,当我测试allow-same-origin时,我做了:

 <iframe id='frm' src="file.html" sandbox="allow-same-origin"></iframe>    
...    
oIFrame = document.getElementById('frm');
var oDoc = (oIFrame.contentWindow || oIFrame.contentDocument);    
if (oDoc.document)     {
oDoc = oDoc.document;
oDoc.getElementById('foo').innerText = 'Hello man!';   
...

file.html的内容:

...
<div id="foo">Hello</div>    
...   
alert(document.cookie); 
...

只有当我有一个名为allow-scripts的附加属性时才有效,所以我有sandbox =“allow-scripts allow-same-origin”。单独允许 - 同源不起作用并且单独允许 - 脚本运行良好(脚本运行但不与API SOP相关,它可以考虑HTML5标准)。

HTML5标准说:

“首先,它可用于允许来自同一站点的内容进行沙盒化以禁用脚本,同时仍允许访问沙盒内容的DOM。”

我误解了Chrome或Chrome实施是错误的吗?

第二个问题:

HTML5标准说关于allow-top-navigation:

“其次,它可用于嵌入来自第三方网站的内容,沙箱以防止该网站打开弹出窗口等,而不会阻止嵌入式页面与其原始网站进行通信,使用数据库API存储数据等“

Chrome中的弹出窗口未被阻止。我怎么能阻止它们?我只使用allow-top-navigation。

干杯, 大卫

1 个答案:

答案 0 :(得分:1)

对于第一个问题: 看来这意味着父页面仍然可以访问沙盒<iframe>的DOM,而<iframe>本身的脚本被阻止执行;所以它只是parent -> iframe而不是iframe -> parent

第二个问题: 也许我误解了,但正如名称allow-top-navigation暗示这将允许而不是阻止框架网站使用top.location.replace()之类的内容。