关于ssl:iframe中安全页面上的内容不安全

Insecure content in iframe on secure page

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

我可以看到这引起了麻烦,因为我希望浏览器抱怨页面上安全内容和不安全内容的混合。我在这里已经看过类似的问题,它们似乎都是相反的方式(iframe中的安全内容)。

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

理想情况下,如果这不是一个好主意(我强烈认为不是),那么我需要能够向客户解释。


如果您的网页是http,则它允许iframe包含https内容。

但是如果您的页面是https,则它不允许使用http内容。

让我们放下以下可能性。

1
2
3
4
5
6
page - iframe - status

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


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

如果您的导航页位于同一服务器上,则可以使用类似这样的相对URL来防止显示"内容不安全"消息。

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

从您的问题看来,您的导航页是由单独的主机提供的,并且您被迫使用类似这样的内容

1
<iframe src="http://otherserver.example.com/app/navigation.jsp" />

这当然会在您的浏览器中引起"不安全的内容"消息。

您唯一的解决方案是

  • 在保存导航页的服务器上实施SSL,因此您可以将https://用作iframe引用,或

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

  • 我个人看不到为什么导航会在不同的主机上,因为那样您将遇到JavaScript跨域脚本问题(除非涉及一些时髦的JSONP)。


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

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

    这当然是一种解决方法,安全性很重要,因此请不要轻易绕开,但是无论如何,这曾经使我克服了类似的问题。