Insecure content in iframe on secure page
我正在为客户端开发应用程序,该应用程序将具有SSL证书并在https下提供。但是,为了与现有网站集成,他们希望在iframe中提供导航。
我可以看到这引起了麻烦,因为我希望浏览器抱怨页面上安全内容和不安全内容的混合。我在这里已经看过类似的问题,它们似乎都是相反的方式(iframe中的安全内容)。
那么,我想知道的是:是否会导致问题,即iframe中包含不安全的内容,并放置在安全的页面上,如果是的话,它们将是什么样的问题?
理想情况下,如果这不是一个好主意(我强烈认为不是),那么我需要能够向客户解释。
- 您是在谈论以纯HTTP使用主页并嵌入使用HTTPS的iframe吗?
-
不,相反,首页是HTTPS,iframe是纯HTTP。我已经对问题进行了编辑,以使其更加清楚。
-
已经有很多关于此的问题。从某种意义上说,这是一个坏主意,因为用户将无法知道页面的哪个部分是安全的,哪些不是安全的。
-
一些答案可以在这里找到:stackoverflow.com/questions/18327314/…
如果您的网页是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-https-不安全的脚本-不允许
-
https-https-图像失真-允许
-
仅仅是因为我们向用户显示您在安全页面上,但是交易不安全。由于用户可能不了解iframe,因此其浏览器和开发人员也可以工作!
-
https-https-图像失真-允许,但浏览器会警告
-
将安全站点嵌入另一个(不同)站点可能会导致点击劫持攻击,这就是PCI准则建议采用框架破坏来防止这种做法的原因。因此,尽管允许,但请谨慎使用!将安全站点专门嵌入不安全的站点内可以为更广泛的攻击打开大门。
如果使用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="/app/navigation.jsp"方法是否不要求iframe的内容在HTTPS下可用?但是,根据OP,iframe采用纯HTTP。
-
另一个示例是,如果您想允许用户内嵌任意网址。例如,在网站设计网站上。
-
KajMagnus是100%正确的,如果您使用的是从https中加载的主页中的相对URL,则所有相对URL也将使用https协议。
尝试删除src属性值中的http:字符,如下所示:
1
| <iframe src="//example.com/thefile.htm"></iframex> |
这当然是一种解决方法,安全性很重要,因此请不要轻易绕开,但是无论如何,这曾经使我克服了类似的问题。
-
这不能解决问题。它只是告诉浏览器"继续并使用您用来访问该页面的任何协议"。在这种情况下,它等效于" example.com ...",它不能解决example.com仅可通过http访问的问题
-
临时需要这种解决方法时,使用此技术可以每次在每个浏览器上解决我的问题
-
正如@RobertLevy指出的那样,这不能"解决"问题。实际上,这是一种好习惯,也是仅使用父级正在使用的协议的最佳方法。如果相关资源也支持https和http,这当然是可行的