混合内容阻塞的解决方案

本文关键字:解决方案 混合 | 更新日期: 2024-09-20 22:07:32

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

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

我们考虑开发自己的web代理,我们确实关心这个解决方案的性能和成本。有人能告诉我们混合内容问题的可用解决方案和我们可以购买的可用第三方网络代理吗?

混合内容阻塞的解决方案

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

话虽如此,当你开始从远程服务器加载用户的内容时,会出现一个大问题,因为它必须开始缓存所有内容。

使用web代理不是一个好的解决方案,原因如下:

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

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

处理这种情况的正确方法是,必须修改所有链接才能使用https加载内容。或者更好的方法是使用协议相关的url

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

浏览器中设计了混合内容警告,以准确指示其含义。你可以在设置中关闭它们,或者只需单击"确定",所以通过抛出混合内容,你会降低UI,但不会降低功能。

由于提供商无法更改其内容,因此会想到以下几点:

  1. 为您的应用程序编写一个后端抓取器,该抓取器抓取网页并通过https本地提供内容服务器。

  2. 不要立即呈现内容,让用户单击它以打开iframe,这样至少可以加载页面并警告用户(可选)。

  3. 通过首先检查https来增强这两种解决方案,许多网站都打开了80和443,但正如您所指出的,并不是每个人都打开了。

  4. 不太熟悉这个,但你甚至可以让InternetExplorer的服务器实例打开页面并缓存它们,从而简化抓取。

如果我在写这篇文章,我会尽可能检查https,并允许混合内容警告,因为这一切都是设计好的。