混合内容阻止的解决方案

时间:2015-03-03 05:39:32

标签: c# html .net mixed-content

我们的产品有一系列网站,主页面包含3个加载这些不同网站的iframe。我们将在所有网站上启用SSL。我们允许html用户数据显示在我们的系统中。目前,由于以下原因,我们因为遇到混合内容问题而暂停此操作。

  • 用户数据中引用http内容的一些元素。 例如:img,js等
  • 在我们的iframe中加载的第三方。 (不同的内容提供商)

我们考虑开发自己的Web代理,我们确实关注此解决方案的性能和昂贵性。任何人都可以告诉我们可以购买混合内容问题和可用的第三方网络代理的可用解决方案吗?

3 个答案:

答案 0 :(得分:2)

最好的解决方案可能是从某些服务购买远程服务器(谷歌会给你数百万次点击),然后设置一个CGI脚本,将不安全的内容加载到远程服务器上,缓存它,然后提供服务内容。这样,您的用户就可以免受第三方的影响,知道他们看到了什么,如果您在这些服务器上设置了SSL证书,那么您可以轻松绕过混合内容。

话虽如此,当您开始从远程服务器加载用户的内容时,将会有一个很大的打嗝,因为它必须开始缓存所有内容。

答案 1 :(得分:1)

出于以下原因,使用Web代理不是一个好的解决方案:

  • 我们有这样的解决方案的性能问题和昂贵,如你所说。
  • 此解决方案中最棘手的问题是我们仍然存在安全漏洞。在网站上使用https的目的是防止网站遭到嗅探和中间人攻击。如果您使用Web代理,则浏览器与代理之间的连接仍然容易受到攻击。
  • 我不确定网络代理是否会有所帮助,因为即使您的服务器启用了SSL,浏览器也会将这些链接解释为http。

有关混合内容的详细信息:https://developer.mozilla.org/en-US/docs/Security/MixedContent

处理这种情况的正确方法是您必须修改所有链接以使用https加载内容。或者更好的方法是使用protocol relative url

<script src="//scripts/main.js"></script>

答案 2 :(得分:1)

混合内容警告在设计中内置于浏览器中,以准确指出它们的含义。您可以在设置中关闭它们或只需单击“确定”,因此通过抛出混合内容,您可以降低UI,但不会降低功能。

有些事情会浮现在脑海中,因为提供商无法改变其内容:

  1. 为您的应用编写一个后端刮板,用于刮擦网页并通过https在本地服务内容。

  2. 不要立即呈现内容,让用户点击它以打开iframe,以便至少加载您的页面,然后您可以警告用户(可选)。

  3. 首先检查https来增强任一解决方案,很多网站都有80和443都打开,但正如你所指出的那样,不是每个人。

  4. 对这个不太熟悉,但你甚至可以让Internet Explorer的服务器实例打开页面并缓存它们以简化刮擦。

  5. 如果我写这篇文章,我会在可能的情况下检查https,并根据设计允许混合内容警告。