2010-01-01 282 views
2

我最近遇到了一个问题,涉及从页面到iframe传递数据(少量)。在HTTPS和HTTP之间传递数据

当两个页面都是http时,这很简单 - 我使用查询字符串将信息传递给iframe和javascript,以表示进程完成的父页面。

当iframe位置更改为https时,通过javascript访问父级时出现问题,因为https和http被认为是不同的域 - 它通过在iframe中使用重定向到普通页面并从那里调用JavaScript来解决。

它在IE和FF上都可以正常工作,但是在测试后发现了一种奇怪的行为。 只有在IE浏览器中,在用户访问https域中的页面时,转到http页面并使用iframe,在重定向脚本仍然无法运行后,出现一个模糊的异常 - TypeError:Access is is否认。

我没有找到一种方法来检查从父页面的iframe的当前位置,唯一的解决方案,我可以看到是一个粗糙的黑客涉及来自父http apge的ajax轮询。

尽管我对改变页面设计或双方都使用https的建议 - 我仍然必须找到一个解决方案 - 因为其他网站,显然,这样成功的工作。我无法使用Firebug复制此行为,因为这些网站无法使用FF,并且我无法获得任何结果。

我想听听解决这个问题的建议,但如果不可行,我想知道这一点。

+1

测试IE的版本?更清楚地描述我们如何重现问题将会有所帮助。你能否加入一个小例子repro? – AnthonyWJones 2010-01-01 11:55:44

回答

4

去年在CCC的25C3会议上发布了一个关于网页安全问题的演讲,并且有一个非常明确的信息:不要在同一页面上混合使用http和https,这提供了无法接受的风险,中间人攻击。

用户无法知道页面的哪个部分是http,哪个是https。在同一页面上结合使用是不当行为,应该这样对待。

的影片是here

+2

定义“不可接受”? – AnthonyWJones 2010-01-01 11:56:39

+4

应该让你被解雇并抛出IEEE和ACM – 2010-01-01 12:15:35

1

你对同源策略跑起来,而当你说有不同的协议将意味着起源是不一样的,跨框架访问不会工作,你是正确的。

如果您发现某些情况下它跨越了原始访问的作品,那么这是该浏览器中的一个错误,您应该将其报告给浏览器制造商。

如果HTTP和HTTPS之间没有标记为HTTPS,Cookie可能会在HTTP和HTTPS之间流动,这可能是您可以考虑的一种方法。

+0

Cookies不会有帮助 - 需求是一个响应式的AJAX-y页面。 iframe中的事件需要传递给父页面。 – vogre 2010-01-01 18:09:42

+0

iframes是旧学校阿贾克斯。如果你想AJAXy然后只实现Ajax,并用ut – blowdart 2010-01-01 20:39:32

0

AnthonyWJones IE版本 - 6,7,8 - 不确定服务包\次要号码。 Firefox是3.5。该应用的

结构 -

https://mydomain/SomeRandomPage 

http://mydomain/PageWithInnerIframe 

https://mydomain/PageWithIframeContent 

重定向 - HTTP 302到

http://mydomain/UnSecuredIframeContentPage 

具有

<script ...> 
parent.document ... 
</script> 

其失败。如果用户不访问

https://mydomain/SomeRandomPage 

流工作正常。除此之外,它的工作原理(逻辑上)很好 - iframe已经指向一个HTTP页面。

Stephan Eggermont 谢谢,我将介绍这些信息以及替代解决方案的示例。

0

发现黑客可以做到这一点,猜测我没有足够好的搜索,首先。

在第二个答案,Leonv描述 - The hack

+0

完成,我希望这些都很快关闭。 – 2010-01-04 22:49:12

0

怎么样都iframe和父页document.domain的黑客?