在以下示例中,Foo.html
位于/tmp/
,并且在没有Web服务器的情况下在本地访问,而Bar.html
位于/var/www/
并由Apache提供服务。
此配置会导致Foo.html
和Bar.html
位于不同的来源,但重要的是使示例可重现。
Foo.html
<html>
<script>
foo = function() {
alert("foo says hi");
};
</script>
<iframe sandbox="allow-forms allow-scripts" width="200" height="300" src="http://localhost/Bar.html" onLoad="foo();" />
</html>
一个bar.html
<html>
<script>
if(top.location != self.location){
parent.location = self.location;
}
</script>
<form action="about:blank" method="post">
<input type="text" name="destination_username" value=""/>
<input type="text" name="quantity" value=""/>
<input type="submit" value="Submit" />
</form>
</html>
在Firefox(Linux上的V27)中,如果加载了Foo.html
,Bar.html
能够转义帧(成为顶部框架),尽管allow-top-navigation
中没有sandbox
1}}属性。
在Chrome中,如果加载了Foo.html
,则Bar.html
无法撤消该框架。
似乎sandbox
在Firefox中未正确实现。 是否有一些HTML属性或JS hack,allow-scripts
虽然不允许在Firefox中使用top-navigation
?