2012-02-14 102 views
57

我正在为客户端开发一个应用程序,该客户端具有SSL证书并在https下提供服务。但是,要与他们现有的网站集成,他们希望在iframe中提供其导航。安全页面上的iframe中的不安全内容

我可以看到这造成麻烦,因为我期望浏览器抱怨页面上的安全和不安全内容的混合。我在这里看过类似的问题,他们似乎都反其道而行(iframe中的安全内容)。

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

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

+0

您是否正在谈论在简单的HTTP中使用您的主页并嵌入使用HTTPS的iframe? – Bruno 2012-02-14 16:51:23

+4

不,相反 - 主页是HTTPS,iframe是纯HTTP。我已经编辑了这个问题来使这个更清楚。 – moogal 2012-02-14 16:53:46

+1

关于此问题已有[问题数量](http://stackoverflow.com/search?q=https+iframe)。总之,这是一个坏主意,因为用户无法知道页面的哪一部分是安全的,哪些不是。 – Bruno 2012-06-13 19:37:42

回答

22

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

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

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

从你的问题听起来好像你的导航页正在从一个单独的主机服务,你就被迫使用这样的事情

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

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

你唯一的解决办法是要么

  1. 在服务器上实现SSL牵着你的导航页面,让您可以使用https://为您的iframe参考,或

  2. 移动导航应用到同一台服务器所以你可以使用一个相对的URL。

个人而言,我不明白为什么你的导航将是一个不同的主机上,因为这样你会得到JavaScript的跨域脚本问题(除非一些时髦的JSONP参与)。

+15

集成一个第三方,你无法运行他们的代码,是一个很好的例子,当你需要一个比这更好的选择时。 – freyley 2013-11-19 21:55:10

+2

“src =”/ app/navigation.jsp“方法不要求iframe的内容在HTTPS下可用吗?然而根据OP,iframe是纯HTTP。 – KajMagnus 2013-12-07 00:03:51

+0

另一个例子是如果你想让用户使用iframe任意的URL的话。例如在网站设计网站上。 – Thayne 2014-12-15 14:57:09

35

如果您的网页是http,那么它会允许带有https内容的iframe。

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

让我们放下以下可能性。

page - iframe - status 

http - http - allowed 
http - https - allowed 
https- http - not allowed 
https- https - allowed 
+3

https - https - 允许 - 在[sc2vault.com]上确认(http://www.sc2vault.com/) – bradleygsmith 2014-07-22 04:24:06

+3

https - https - 不安全脚本 - 不允许 – coderek 2014-07-30 21:19:23

+3

https - https - 不安全图像 - 允许 – coderek 2014-07-30 21:20:05

-1

尝试删除HTTP:src属性的值中的字符像这样:

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

当然,这是一种解决方法,安全性是非常重要的,所以不要轻率地绕过,但无论如何,这一次得到了我过去了一个类似的问题。

+14

这并不能解决问题。它只是告诉浏览器“继续,并使用您用来访问此页面的任何协议”。在这种情况下,它相当于“https://example.com ...”,它不能解决仅通过http – 2016-02-15 16:50:30

+1

提供的example.com问题。使用此技术可以在每种浏览器上解决我每次遇到的问题需要临时解决方法temporaryrilly – bastien 2016-07-17 08:59:04

+0

As @RobertLevy指出,这并不能“解决”问题。这实际上是一种好习惯,也是使用父母使用的任何协议的最佳方式。这当然只适用,如果相关资源也支持'https'和'http' – nuts 2017-05-03 10:10:19