IFRAME安全问题中的Javascript

时间:2011-06-18 18:08:25

标签: javascript flash security iframe

在网站http://imaginaryman-test.blogspot.com/上,打字机位于IFAME内。当您直接访问网站http://castedspell.com/mark/时,所有浏览器都能正常运行,但在查看嵌入IFRAME的版本时,它无法在IE上运行并在Chrome中引发错误。

不安全的JavaScript尝试从包含网址http://imaginaryman-test.blogspot.com/的网址访问包含网址http://castedspell.com/mark/的框架。域,协议和端口必须匹配。

这是嵌入式IFRAME的源代码 https://github.com/totheleftpanda/typeWrite/tree/master/mark

我知道这是一个安全问题,但我不知道如何修复它,找不到任何可以帮助我解决问题的材料。

5 个答案:

答案 0 :(得分:3)

最简单的方法是设置一个PHP(或任何服务器语言)代理,它只从另一个域获取页面内容并输出。唯一真正的缺点是不会发送远程域客户端的cookie。

答案 1 :(得分:1)

你唯一的机会就像easyXDM。 (或者使用哈希手动完成,但更喜欢easyXDM)

参见SO答案:Cross-domain hash change communication

例如。如果你想打电话给方法:
http://easyxdm.net/wp/2010/03/17/remote-procedure-calls-rpc/

编辑:

如果我在firefox中尝试你的演示,我根本没有得到“不安全的JavaScript尝试访问”错误。但在Chrome中,它被抛出了很多次 您的示例中还有很多其他代码,我甚至不确定您的代码是否会导致问题。您应该进行非常有限/基本的测试,以查看您的闪存通信是否有效,而不是所有其他javascripts。

答案 2 :(得分:1)

看看http://benalman.com/projects/jquery-postmessage-plugin/。这是一个jquery插件,可以在两个帧之间发送消息。这两个帧不需要在同一个域上。但您确实需要访问这两个页面才能修改它们。我还在这里写了一篇文章来回答iframe之间的沟通。 How to capture clicks from iframe on another domain?

答案 3 :(得分:0)

之前我遇到过类似的问题。基本上,如果您的iframe包含来自不同于主页面域的域的页面,则javascript将无法跨越它们之间的界限。 iframe中的Javascript将能够在iframe内进行通话,主页面中的javascript将能够在主页面内进行通话,但是它们将无法相互通话。

这是一个旨在阻止跨站点脚本攻击的安全问题。你可以通过一些黑客来解决这个问题,但它们都是(或者至少是我所知道的)相当毛茸茸的。

在尝试进一步讨论之前,您应该回答以下问题:

1)你在使用javascript的页面之间想要做什么?
2)您是否可以访问这两个页面的来源?

答案 4 :(得分:0)

它可能比上述答案更简单。它看起来像这个功能:

function playSound(){
    swf.playSound();
}

在将swf实际分配给它下面的函数中的swfObject之前写入DOM时间轴。

我建议进一步降低该功能,然后重新测试。