代码之家  ›  专栏  ›  技术社区  ›  Ilia Choly

XSS安全性。来自同一域的两个iFrame之间的通信

  •  9
  • Ilia Choly  · 技术社区  · 16 年前

    域abc.com有一个包含2个iFrame的页面。它们都是从域xyz.com加载的。是否会阻止这两个ifxs/JavaScript框架之间的通信?

    4 回复  |  直到 16 年前
        1
  •  4
  •   bobince    16 年前

    正如乔尔所说的那样 Same Origin Policy 将阻止对父窗口的访问。

    使用cookie在来自同一域的不同文档/帧/窗口上的客户端脚本之间建立通信通道。一个文件集 document.cookie 要编写cookie,另一个在间隔轮询器上读取 document.cookie ,作为一个新的信息,它将。

    这真的很烦人,因为您必须让每个文档识别自己,并在何时向谁发送消息时发出信号。真的,只有最后的办法。

        2
  •  6
  •   Erlend    16 年前

    这取决于你所说的沟通。似乎某种类型的交流是可能的。以下是一个例子:

    <iframe name="test1" src="http://www.xyz.com/frame1.html">
    <iframe name="test2" src="http://www.xyz.com/frame2.html">
    

    <a href="javascript:alert(document.body.innerHTML)" target="test1">click me</a>
    

    因此,我们单击第2帧中的链接,但显示第1帧的内容。

        3
  •  3
  •   Joel    13 年前

    var otherDocument = window.parent.frames[x].document;
    // this will fail ---------^
    

        4
  •  0
  •   Mic    16 年前

    iFrame将无法通过相同来源策略(SOP)通过javascript从主页获取任何内容。

    但是,他们将能够使用您的cookie(称为CSRF)向您的服务器进行POST(在一定程度上)调用。因此,不要只依赖会话cookie来确保安全。

    防止这种情况的一个好方法是在主页中有一个令牌(iFrame看不见),您可以将它传递给服务器的每个调用。