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


68

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

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

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

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


您是在谈论以纯HTTP使用主页并嵌入使用HTTPS的iframe吗?
布鲁诺

5
不,相反,首页是HTTPS,iframe是纯HTTP。我已经对问题进行了编辑,以使其更加清楚。
moogal

1
已经有很多关于此的问题。在某种程度上,这是一个坏主意,因为用户将无法知道页面的哪个部分是安全的,哪些不是安全的。
布鲁诺

1
在这里可以找到一些答案:stackoverflow.com/questions/18327314/…–
马修·彼得斯

Answers:


30

如果使用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)。


19
与您无法运行其代码的第三方进行集成是一个很好的例子,说明您何时需要比此更好的选择。
freyley,2013年

2
src="/app/navigation.jsp"方法是否不要求iframe的内容在HTTPS下可用?但是,根据OP,iframe采用纯HTTP。
KajMagnus

另一个示例是,如果您想允许用户内嵌任意网址。例如在网站设计网站上。
Thayne 2014年

KajMagnus是100%正确的,如果您使用从https加载的主页中的相对URL,则所有相对URL也将使用https协议。
Ben A. Hilleli

45

如果您的网页是http,则它允许使用带有https内容的iframe。

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

让我们放下以下可能性。

page - iframe - status

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

4
https-
https-

3
https-https-inscure images-允许
coderek 2014年

1
仅仅是因为我们向用户显示您在安全页面上,但是交易不安全。由于用户可能不了解iframe,因此其浏览器和开发人员也可以工作!
Amol Ghotankar 2014年

HTTPS - HTTPS - inscure图像-允许的,但浏览器会发出警告
ÇağatayGürtürk

将安全站点嵌入另一个(不同)站点可能会导致点击劫持攻击,这就是PCI准则建议采用框架破坏来防止这种做法的原因。因此,尽管允许,但请谨慎使用!将安全站点特别是嵌入不安全站点内可以为更广泛的攻击打开大门。
2015年

-3

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

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

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


17
这不能解决问题。它只是告诉浏览器“继续并使用您用来访问该页面的任何协议”。在这种情况下,它等效于“ example.com ...”,它不能解决example.com仅通过http提供的问题
Robert Levy

2
临时需要这种解决方法时,使用此技术可以在每次浏览器上每次都解决我的问题
bastien

1
正如@RobertLevy指出的那样,这不能“解决”问题。实际上,这是一种好习惯,也是仅使用父级正在使用的协议的最佳方法。当然,这只有在相关资源也支持https和支持的情况下才有效http
坚果
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.