不安全的图像打破绿色SSL栏

时间:2015-11-22 18:11:58

标签: apache ssl ssl-certificate apache2.4 mixed-content

我的网站上有一些图像链接导致绿色SSL证书显示为灰色。

错误是

  

此内容也应通过HTTPS提供。 2jquery.min.js:5混合   内容:' https://mywebsite.com/'是通过HTTPS加载的,   但要求一个不安全的形象   ' http://www.otherwebsite.net/wp-content/uploads/2015/10/ALPHA.FOUNDER.png&#39 ;.   此内容也应通过HTTPS提供。

这里有一些问题:

  • 图片链接是HTTP
  • 图片来源正在从其他网站加载 他们的SSL证书已过期

但是在一天结束时,我的用户可以加载HTTP和HTTPS的任何图像

有没有办法覆盖这个灰色锁并使其变绿?

2 个答案:

答案 0 :(得分:1)

如果没有严重的黑客攻击,基本上没有办法解决这个问题。

HTTPS表示该网站是安全的,并且用户会看到一个漂亮的绿色挂锁来确认。

访问者知道他们访问的网站是URL中的网站,他们显示的内容是网站所有者提供的内容,并且不会以任何方式进行更改。他们也知道他们正在浏览的是保密。大多数用户是否真正理解这个深度是这一点 - https意味着安全。

如果页面的一部分是通过http加载的,那么这不再是真的,因此没有显示绿色挂锁 - 这是正确的。

现在有不同类型的混合内容:

图像被称为被动混合内容。由于它是通过http传递的,因此它是未加密的,因此可以在没有访问者知道的情况下将其替换为另一个图像。此外,用户要求窃听者可以看到特定图像,这意味着他们不再私下浏览。根据图像的不同,这可能会或可能不会那么糟糕。例如,图像可以是构建一个绝密项目的示意图,用另一个替换它可能会破坏该项目。而且还会让其他人知道你正在考虑建立这个绝密项目。

因此,被动混合内容可能很糟糕,但主动混合内容可能更糟糕。例如,JavaScript请求可能会受到干扰,因此可以用来更改整个页面或记录密码或其他一百万个不良内容。

然而,一旦你开始允许一些混合内容的道路,你只需要向用户提出并发症和令人困惑的消息。更好的是不要区分它们而只是说:如果你想要绿色挂锁,不要混合内容。浏览器开始严格执行此操作,因为它们只用于强制执行活动的混合内容,这在我看来是件好事。

那么你能对你的问题做些什么呢?

您可以在您的网站上托管图片,而不是链接到其他网站。这是一件好事,因为其他网站可能不会感谢您使用他们的带宽来提供图像,并且如果他们更改图像您也无法控制。请参阅how this sort of thing turned out for the Huffington Post when it upset one artist over this sort of hot linking

或者您可以使用代理从错综复杂的路由获取资源,并通过https将其传送到您的网站。但是有些人会说,如果作弊(再次想象上面的场景被窃听者改变的场景)有点儿,当有更容易的选择时,这听起来像是一大堆麻烦(主要是不要)在https页面上使用http资源。)

您还可以在您的站点上实施内容安全策略,以将不安全的http请求升级到https。这仅在现代浏览器上支持,并且在这个特定示例中没有帮助(因为其他站点上的https被破坏因此图像不会加载)但是至少会停止打破绿色挂锁并且还可以帮助其他图像添加https和http都可用的内容,并且输入了错误的链接。虽然有点软糖。

或者只是停止使用仅限http网站的资源。特别是那些过期的https证书。听起来像一个狡猾的网站。

答案 1 :(得分:0)

使用AWS Cloudfront创建反向代理

对于http://test.com/user/profile/user1.jpg上的图片

  1. 创建新的发行版
  2. 选择Web交付方式
  3. 将“原始域名”设置为不安全图像的基本URL
  1. 将“来源路径”设置为/ user / profile
  2. 将查看器协议策略设置为仅HTTPS
  3. 您可以选择允许使用gzip
  4. 设置为启用

然后您应该可以访问如下图像:

https:// {cloudfrontid} .cloudfront.net / user1.jpg

如果您要保留url格式,请忽略原始路径