由于热链接图片导致混合内容

今天早上我突然注意到,浏览器地址栏中我们的论坛出现了“您的连接不安全”的警告图标。我很快通过“最新”功能并逐一检查用户上传的图片,定位到了问题所在。发现有两张图片(以 Onebox 形式嵌入)使用了 http 链接而非 https 链接。我删除了这两张图片,仅保留了链接本身。问题立即得到解决,安全锁又变回了绿色。:grinning: 现在我也明白了,为什么我加入的另一个论坛也显示“连接不安全”的警告……多年来,很多人上传了来自 http 网站的链接,并以 Onebox 形式嵌入。幸好我不需要去处理那个论坛!:wink:

除非图片非常大,否则在默认设置下,Discourse 会下载这些远程图片并将其本地化,以防止图片失效。这是 Discourse 的常规操作。此外,这还能使图片链接也采用 HTTPS 协议。

我们使用的是付费版 Discourse,并且采用默认设置——我未做任何更改。图片本身仅 18.5KB。导致出现不安全连接警告的唯一原因是包含 http 链接的 Onebox。一旦我删除了该 Onebox,不到 2 秒,锁形图标就重新变绿了。用户确实上传了该保存的照片并置于 Onebox 上方以展示更大尺寸,这没有问题。我可以检查一下默认设置具体是什么。

编辑:我检查了这些默认设置:
抓取图片:(已勾选)检索远程图片…
将远程图片下载到本地:(已勾选)通过以下方式将远程图片转换为本地图片…

未进行任何更改。

您可以尝试在这里粘贴相同的图片链接,我们可以帮忙查看。我能想到的唯一会阻止本地下载的情况是图片非常大。

我刚刚粘贴了链接,但它没有生成摘要框。我还粘贴了用户使用的第二个链接,同样没有生成摘要框——但随后我删除了该链接,因为它包含她的用户账号,用于从该网站下载照片。
奇怪的是,它在这里不会生成摘要框。我刚刚在论坛上创建了一个新回复,粘贴了链接——它生成了摘要框,安全锁图标立即从绿色变为黑色,并显示警告感叹号图标……现在摘要框中显示照片链接已损坏。

编辑:我刚刚因首次生成摘要框而获得一枚徽章……但在这里的 Meta 页面上,它除了显示链接外什么也没显示。:laughing:

这很奇怪 :thinking:

@nbianca 等你回来后能帮忙看一下吗?

第一个 onebox 徽章已授予那些长时间未被 oneboxed 的链接,以至于我以为那是预期的行为。:roll_eyes:

这种情况只发生在我网站上,当时我删除了一个被自动嵌入的链接,但该链接在我们的论坛地址栏中显示了一个“不安全”图标。在我将这个链接发布到 Meta 后,它没有被自动嵌入,但却给了我徽章。另一件奇怪的事是,我重新发布了该链接到我的网站,现在它无法被自动嵌入,并且照片显示为“链接已损坏”图标。我开始怀疑,原始链接末尾附有原发帖人的客户编号,而在我移除了该客户 ID 后,它不再被自动嵌入。但她也在同一帖子中发布了相同的照片链接(不带她的 ID 编号),而那个链接确实被自动嵌入了。这真的让我很困惑。之后,其他人以及原发帖人的所有其他链接在我的网站上都被自动嵌入了。只有这个链接引发了这次事件。

我会询问原发帖人(一位版主)是否可以创建一个测试主题并在其中报告她的链接,以:1) 查看它是否被自动嵌入,以及 2) 查看它是否会导致地址栏中的“安全”图标再次变为“不安全连接”图标。我有点困惑。:wink:

编辑:我在我们网站的 Meta 类别中创建了一个隐藏主题。我已请求版主(她也有管理员权限)将她的链接重新发布到该主题中。一旦她发布,我会在此处告知大家。

编辑2:以下是我的版主在测试主题中发布的链接。它确实被自动嵌入了,并且确实导致锁形图标再次变为“不安全连接”。如您所见,它没有在这里被自动嵌入。然而,它在发布的我们网站上确实被自动嵌入了。我复制了该链接并将其发布在我们的测试主题中。它被自动嵌入了,但没有显示照片!如您所见,它没有在这里被自动嵌入。我认为这可能与他们在我的版主电脑上设置的跟踪 Cookie 有关。我没有该 Cookie,因此当我自动嵌入该链接时,照片无法显示。

您需要我们测试主题的链接吗?这是我们 Meta 类别中唯一的隐藏主题,位于列表顶部。我们是付费订阅用户。(forum.nodders.net)

我的模组已上传,并再次将她的链接单行嵌入到我们的 Meta 分类中,结果“安全连接”图标从绿色变成了黑色,并出现了橙色警告图标。我(代她)发布了一条来自 Mozilla(Firefox)的链接,说明了 HTTP、HTTPS 和混合内容的区别,因为她曾声称混合内容没有问题。:roll_eyes:

我将再次删除她的链接,以恢复论坛的安全连接。如果您需要,我可以再麻烦她重新发布这些链接。

如果这里没有单盒显示,那就无计可施了。您的实例是否已更新至最新代码?

我昨天最后检查时,仪表盘在那之前几小时刚更新过。Discourse 是在 7 月 26 日更新到 2.4.0.beta2 的吗?
看起来只有那个链接导致了这个问题。不确定是否与我的模组在该网站的账号有关,或者是否是一个追踪 Cookie 在链接被“一键嵌入”(oneboxed)时“丢失”了?我已在我们的网站上删除了该链接,现在已恢复为“安全连接”,不再存在混合内容问题。

该问题已在以下位置修复:

当我发布外部链接时,系统尝试从不安全路径加载特色图片,导致我遇到混合内容错误。

简易修复方法

  • 进入 /admin/customize

  • 在所有现有主题的 部分添加以下代码:

<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">

据我所测试,此方法在 Chrome 浏览器中有效。:hushed: