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

我正在为一个客户机开发一个应用程序,它将拥有一个 SSL 证书,并通过 https 提供服务。但是,为了与现有站点集成,他们希望在 iframe 中提供导航。

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

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

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

139999 次浏览

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

如果你的页面是 http,那么它允许 iframe 与 https 内容。

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

让我们写下以下可能性。

page - iframe - status


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

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

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

这当然是一个变通方案,安全是重要的,所以不要轻易绕过,但无论如何,这曾让我通过类似的问题。