用户在HTTPS站点上贡献的图像而没有混合内容警告


9

我有一个论坛,就像大多数论坛一样,用户可以在其中发布图像。我已经在整个站点上设置了HTTPS,但是当然大多数外部图像都是使用HTTP而不是HTTPS链接的。因此,通过HTTPS加载论坛会显示混合内容警告等。

解决这个问题有哪些策略?一些图像来自我自己的站点,因此我可以重写那些URL以使用HTTPS,因为我知道它可以工作。但是对于外部URL,许多URL不能与HTTPS一起使用,因此我无法进行全面重写。

我可以将非安全图像重写为链接而不是内联图像,但这看起来并不好,并且可能会使用户感到困惑。有更好的解决方案吗?


2
您可以使用camo
wb9688

2
Google尚未针对图片搜索解决此问题。图片搜索“不安全:” i.imgur.com/8XVTQsi.png
Stephen Ostermiller


1
更好的是,我不知道,它可能会违反版权法,但是一种技术解决方案是制作图像的副本,并通过HTTPS在您控制的域中提供服务…
CVn 2016年

1
穷人的方式:在保存/编辑后,您可以应用逻辑来重写打算用于src="http://someimage.jpg"相对结构化的所有数据src="//someimage.jpg"……或者只是对其进行验证。如果您想要一个严格的绿色锁定(不安全的图像不会锁定您的锁定),请强制执行HSTS。然后在编辑器界面中记录当前必须通过HTTPS可用的图像,否则它们将根本不会显示。诸如“糟糕,您犯了一个错误。为防止滥用和MITM攻击,所有媒体都必须使用HTTPS。返回并更正它,或者选择其他图像提供程序。”。
dhaupin

Answers:



1

只是意识到我从未发布过我的解决方案。斯蒂芬评论中提供的答案是为我解决的。简而言之,我创建了一个执行以下任务的代理脚本:

  1. 如果图片是https,请不要理会它。
  2. 如果图像是http,并且来自已知支持https的站点(例如,我自己的站点,imgur.com等),则重写为https。
  3. 否则,如果图像是http,则将其重写以使用 http://example.com/imgproxy?img=ORIGINALURL&hash=KEY

然后,代理脚本获取HTTP图像,将其本地缓存,然后输出图像数据。在重复请求时,它将直接输出缓存的数据。链接的SO答案描述了安全性哈希和其他详细信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.