0

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

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

我们曾考虑开发自己的 Web 代理,但我们确实担心此解决方案的性能和成本。谁能说出混合内容问题的可用解决方案和我们可以购买的可用第三方网络代理?

4

3 回答 3

2

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

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

于 2015-03-05T21:23:10.467 回答
1

Mixed content warnings are built into browsers by design to indicate exactly what they mean. You can turn them off in settings or just click ok, so by throwing the mixed content, you're degrading UI, but not functionality.

A few things come to mind, since the providers can't change their content:

  1. Write a back end scraper for your app that scrapes the web page and servers the content locally over https.

  2. Don't render the content immediately, make the user click on it to open the iframe so that at least your page loads and you can warn the user (optional).

  3. Enhance either solution by checking for https first, a lot of websites have 80 and 443 both open, but as you pointed out, not everybody.

  4. Not too familiar with this one, but you can maybe even have the server instance of internet explorer open the pages and cache them for you simplifying the scrape.

If I was writing this, I would check for https when possible and allow the mixed content warnings as all that's by design.

于 2015-03-11T17:19:51.737 回答
1

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

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

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

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

<script src="//scripts/main.js"></script>
于 2015-03-07T03:31:02.580 回答