HTML5 iframe沙箱属性问题

Daw*_*wid 5 security iframe html5 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!';   
...
Run Code Online (Sandbox Code Playgroud)

file.html的内容:

...
<div id="foo">Hello</div>    
...   
alert(document.cookie); 
...
Run Code Online (Sandbox Code Playgroud)

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

HTML5标准说:

"首先,它可以用来允许来自同一站点的内容被沙箱化以禁用脚本,同时仍然允许访问沙盒内容的DOM."

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

第二个问题:

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

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

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

干杯,大卫

use*_*118 1

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

第二个问题:也许我误解了,但顾名思义,allow-top-navigation这将允许而不是阻止框架网站使用top.location.replace().