如何防止在JavaScript的一个iFrame来访问外部网站的性质,即使iframe的内容来自同一

2019-07-03 14:15发布

基本上我想有一个iFrame总是限制,就好像它来自不同的领域它的内容,即使内容来自同一产地。

有没有办法做到这一点?

Answer 1:

这将隐藏window.parent在子帧/窗口,但不是top物业。

window.parent属性仍直到子窗口/帧的onload事件结束访问。

<html>
  <head>
    <style type="text/css">
      #wrapper {width:1000px;height:600px;}
    </style>
    <script type="text/javascript">
      window.onload = function() {
        var frm = document.getElementById('childFrame');
        var win = frm.contentWindow || (frm.contentDocument && frm.contentDocument.parentWindow) || (frm.document && frm.document.parentWindow);
        if (win) win.parent = null;
      }
    </script>
  </head>
  <body>
    <div id="wrapper">
      <iframe id="childFrame" src="child.html" frameborder="0" style="width:100%;height:100%;"></iframe>
    </div>
  </body>
</html>


Answer 2:

最好的解决办法可能是使用HTML5沙箱属性的iframe中,(默认)明确禁止这两种脚本和同源访问父DOM。

在很好的介绍http://msdn.microsoft.com/en-us/hh563496.aspx

随着2012年12月,这似乎是目前大多数浏览器都支持 。



文章来源: How can I prevent JavaScript in an iFrame to access properties of the outer site, even if the iFrame's content comes from the same origin?