安全页面上iframe中的不安全内容

时间:2012-02-14 16:40:46

标签: iframe ssl

我正在为客户开发应用程序,该客户端将拥有SSL证书并在https下提供服务。但是,要与现有网站集成,他们希望在iframe中提供导航。

我可以看到这会带来麻烦,因为我希望浏览器会抱怨页面上安全和不安全内容的混合。我在这里看过类似的问题,他们似乎都反过来引用了这一点(iframe中的安全内容)。

我想知道的是:它会导致问题,将不安全的内容包含在iframe中,放在安全页面上,如果是这样,它们会出现什么样的问题?

理想情况下,如果这不是一个好主意(并且我有强烈的感觉,它不是)我需要能够向客户解释这一点。

3 个答案:

答案 0 :(得分:41)

如果您的网页是http,那么它允许iframe使用https内容。

但如果您的网页是https,那么它不允许使用http内容。

让我们放下以下可能性。

page - iframe - status

http - http  - allowed
http - https - allowed
https- http  - not allowed
https- https - allowed

答案 1 :(得分:26)

如果使用https://www.example.com/main/index.jsp(SSL)访问您的页面,那么如果HTML代码中有任何资源引用{{1},则您的浏览器会抱怨“此页面包含安全和不安全的项目” (非SSL)。这包括iframe。

如果您的导航页面托管在同一台服务器上,那么您可以使用这样的相对URL来阻止“不安全内容”消息......

http://

从您的问题来看,您的导航页面似乎是从一个单独的主机提供的,而您却被迫使用类似的东西

<iframe src="/app/navigation.jsp" />

这当然会在您的浏览器中导致“不安全的内容”消息。

您唯一的解决方案是

  1. 在包含导航页面的服务器上实施SSL,以便您可以使用<iframe src="http://otherserver.example.com/app/navigation.jsp" /> 作为iframe参考,或

  2. 将导航应用程序移动到同一服务器,以便您可以使用相对URL。

  3. 我个人无法理解为什么你的导航会出现在另一台主机上,因为那时你会遇到JavaScript跨域脚本问题(除非涉及一些时髦的JSONP)。

答案 2 :(得分:-4)

尝试删除src属性值中的http:字符,如下所示:

<iframe src="//example.com/thefile.htm"></iframe>

这当然是一种解决方法,安全很重要,所以不要轻易绕过,但无论如何这一次让我遇到了类似的问题。