我正在与一个 phpBB 论坛用户打交道,他希望在整个网站上设置 SSL 以保护用户凭据和网站的“私人”部分。
但是,他们希望保留用户生成的 img 标签到非现场内容的传统论坛用户体验,这会触发浏览器混合内容警告。我们提出的唯一解决方案是SSL 授权代理。现在思考了一段时间后,我很好奇为什么浏览器会专门警告图像?我了解 javascript 的情况,但是图像?
我正在与一个 phpBB 论坛用户打交道,他希望在整个网站上设置 SSL 以保护用户凭据和网站的“私人”部分。
但是,他们希望保留用户生成的 img 标签到非现场内容的传统论坛用户体验,这会触发浏览器混合内容警告。我们提出的唯一解决方案是SSL 授权代理。现在思考了一段时间后,我很好奇为什么浏览器会专门警告图像?我了解 javascript 的情况,但是图像?
我假设您的推理类似于,“如果构建页面的人选择不安全地发送它的一些图像,那么浏览器应该尊重这个决定是有原因的,并在没有警告的情况下允许它。页面是安全的正如提供它的实体所希望的那样。”
相比之下,浏览器开发人员的推理类似于,“我们在用户看到的页面上放置了一个安全图标,用户应该能够假设这意味着整个页面是安全的。如果它的某些部分是安全的。 't, 用户应该知道这一点。”
这两个论点都是有效的,它们只是对网页安全意味着什么的不同解释。
图像也有特定的风险。使用 HTTP 协议以明文形式请求图像。这会披露 URL 或标头中的任何信息。最严重的威胁是图像可能包含用户认为安全源自用户选择的站点的说明或信息。这可用于网络钓鱼攻击。
浏览器不知道图像或其他资源应该传达什么类型的信息:也许它只是一个徽标,或者它可能是一些 UI,或者图像是您正在访问的页面的全部点。浏览器无法知道资源对用户是否重要。
当使用 HTTPS 加载主(页面)URL 时,浏览器会向用户发出信号,表明正在查看的页面是安全的,通常带有锁定图标或绿色 URL 栏或类似的东西。它并没有说“这个页面是安全的,除了那里的那个图像”——根本没有一种机制可以向查看者指示哪些部分是不安全的部分。因此,解决方案是如果浏览器说页面是安全的,那么页面上的所有元素都必须是安全的,否则必须通知用户异常。
请注意,查看带有一些安全元素的不安全 URL 不会生成通知或警告,但同时不会向用户发出任何信号表明页面上有任何安全措施。由于不存在安全性预期,因此混合内容的存在并不值得注意。
简短的回答:缺乏语义信息
在论坛中,用户自然希望内容来自“未经授权”的第三方(任何注册用户,实际上可能是任何人),而不仅仅是来自网站管理员(和授权作者)。
用户完全理解,邮件不代表站长的意见,也不是域名所有者以任何方式“授权”的。对于任何理性的用户,对于网页中出现的消息内容或此类消息中包含的图像没有强烈的特别期望(有一个弱的期望是及时清除渣滓,但在清除之前任何人都可以看到)。
但是网络浏览器不了解论坛是什么。该https://example.com/
页面应被信任来自example.com
并安全地(如在传输安全中)代表example.com
网站管理员的意见,并且任何足够大的不安全图像(特别是IMG
没有明确大小)都可以用来显示一个大警告,即
你的账户暂时无法使用。你必须去
http://fakesite-example.com/
确认它。否则,您的帐户可能会被永久删除。
渲染为图像。
当然,在论坛消息中,它会被用户视为代表帖子作者的意见,但网络浏览器无法知道这一点。
实际上,tylerl,浏览器确实知道资源打算传达什么类型的信息。
明显的风险是请求中暴露了信息(一旦将 javascript 注入页面,在不更改功能的情况下将数据注入 URL 是微不足道的,例如 img.src=img.src+'?session=1234'; )和因此,它可以用来破坏交换。
另一个风险是图像可能具有价值——在版权、机密性或可能作为身份验证过程的一部分方面。