【问题标题】:How to access an insecure websocket from a secure website?如何从安全网站访问不安全的 websocket?
【发布时间】:2018-01-16 06:24:12
【问题描述】:

TL;DR:网站通过 HTTPS 提供服务,需要通过未加密的通道 (ws:// url) 访问 WebSockets 服务器。浏览器不喜欢这样。

加密 websocket 是可能的,但不方便 - 没有可以签署证书的受信任机构,因此需要为每个客户端手动安装它。我想把它作为最后的手段。

网站必须通过 HTTPS 提供服务,并且不能降级为 HTTP。

还有其他方法可以绕过这个限制吗?我尝试了 Content-Security-Policy,但没有成功。

【问题讨论】:

  • 如果有,这是一个安全漏洞,需要修复。
  • @JamesKPolk - 你这么认为吗?发明 CORS 是为了在合法场景中真正需要时显式绕过同源策略。为什么不用类似的东西来绕过“相同的安全级别”(或其他任何名称)?
  • 嗯,我认为困难在于用户界面设计。浏览器应该如何向用户表明他们不再安全?混合内容警告?
  • @JamesKPolk - 我认为开发人员应该有责任确保安全,然后告诉浏览器“是的,即使它不是通过加密通道加载的,它仍然是安全的” .同样,与 CORS 相同 - 开发人员明确并付出额外的努力告诉浏览器“是的,毕竟这没关系”。然后不需要额外的用户界面。
  • CORS 通过允许在受控、允许的制度下穿越站点来维护安全性。从受 SSL 保护的页面中使用非 SSL websocket 会破坏安全性。开发人员不能说没关系,因为它不是 - 开发人员无法采取任何措施来阻止已打开的攻击。它实际上是阻止 websocket 还是给出混合内容警告?

标签: security encryption websocket secure-context


【解决方案1】:

维克斯,

您所描述的场景是在限制打开非安全 Websocket 连接时被认为是安全问题的场景之一。

访问安全网站 (HTTPS) 的用户假定所有数据都是安全的。浏览器将不允许在此上下文中进行非安全通信(除非出现安全故障)。这应该包括资产请求和在安全上下文中调用的任何其他请求(预计“混合内容”消息将慢慢淡出历史,因为限制收紧)。

在某些浏览器上甚至更糟。例如,Safari 将拒绝打开与未签名服务器的安全 Websocket 连接,即使网页已加载临时批准证书。

还有其他方法可以绕过这个限制吗?

很遗憾地报告您的问题的简短回答是“否”。

【讨论】:

  • 那好吧。谢谢(你的)信息。我将尝试看看如何使证书工作(网站是否可以发出提示以永久安装/信任自签名证书?)
猜你喜欢
  • 2012-09-04
  • 2010-12-09
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多