【问题标题】:WS on HTTP vs WSS on HTTPSHTTP 上的 WS 与 HTTPS 上的 WSS
【发布时间】:2015-01-03 15:30:54
【问题描述】:

我了解到 WS 仅适用于 HTTP,而 WSS 可同时适用于 HTTP 和 HTTPS。 WSS(安全 Web 套接字)连接在 HTTP 服务器上是否与在 HTTPS 服务器上一样安全?如果网站/服务器不是,Web Socket Secure (WSS) 连接是否仍通过 TLS/SSL 加密?

【问题讨论】:

  • "我知道 wss 适用于 http 和 https" 嗯?
  • 也许我应该说“我已经读过”而不是“我知道”?
  • David 的意思是您所阅读的信息,“wss 适用于 http 和 https”,是错误的。看我的回答。
  • 那么,如果连接是http,那么WebSocket必须是“ws”,如果连接是https,那么WebSocket必须是“wss”?

标签: security http https websocket


【解决方案1】:

“wss 适用于 http 和 https” ???这是一个奇怪的短语。

wss 之所以安全,只是因为它表示“基于 https 的 WebSocket 协议”。 WebSocket 协议本身并不安全。没有 Secure WebSocket 协议,只有“基于 http 的 WebSocket 协议”和“基于 https 的 WebSocket 协议”。另见this answer

作为 nv-websocket-client(Java 的 WebSocket 客户端库)的作者,我也怀疑短语 “如果打开安全 WebSocket 连接的 HTML/JavaScript 来自非安全HTTP,WebSocket 连接仍然是安全的” 在 oberstet 的回答中。

阅读RFC 6455(WebSocket 协议)以获得正确答案。要成为一名真正的工程师,不要避免阅读 RFC。仅在技术博客和 StackOverflow 中搜索答案永远不会将您带到正确的地方。

【讨论】:

  • 浏览器通过 HTTP(不是 HTTPS)加载的包含 JavaScript 的 HTML 页面可以打开非安全 (ws) 和安全 (wss)。通过 HTTPS 加载的 HTML 页面只能打开 wss 连接(不是 ws 连接)。你不必相信我:试试吧。
  • 你所说的只有在网络服务器也监听 https 时才有效。
  • 大部分答案都令人困惑,并且听起来好像 wss 可以通过 http 连接实现,就像通过普通的 tcp/ws 连接建立 wss 特定的 tls 一样。
【解决方案2】:

如果网站/服务器不是,Web 套接字安全 (wss) 连接是否仍通过 TLS/SSL 加密?

是的。

wss(安全 Web 套接字)连接在 http 服务器上和在 https 服务器上一样安全吗?

是的(见上文)。有一点需要注意:如果打开安全 WebSocket 连接的 HTML/JavaScript 来自非安全 HTTP,WebSocket 连接仍然是安全的,但攻击者可能会在从 Web 服务器发送到浏览器时修改 HTML/JavaScript . HTTP 连接不受中间人嗅探或修改的保护。

【讨论】:

  • 啊,纯 TCP 连接(非 TLS)可能受到 t 和中间人攻击。
  • 你的第一个答案有参考吗?
  • RFC6455 指定 wss 安全运行。托管环境(浏览器或其他)无关紧要。您还可以查看转储信息以确认浏览器行为。
  • 非 TLS 连接会受到 TLS 连接不受的各种攻击。因此,NO 非 TLS 连接并不像 TLS 连接一样安全。
  • 这里似乎有很多混淆;)重点是,对于浏览器,涉及到 2 个连接:a)通过 HTTP 或 HTTPS 获取 HTML 和 JS 文件的连接和 b)实际的 WebSocket 连接,它仅作为 HTTP 或 HTTPS 连接开始。现在您可以 a) 通过 HTTP 完成,而 b) 通过升级到 WSS 的 HTTPS 完成。但是您不能 a) 通过 HTTPS,然后 b) 通过 HTTP 不升级到 WSS,而是使用普通 WS。对于 browser WebSocket 客户端(并且浏览器强制执行),这是明确禁止的。非浏览器 WebSocket 客户端甚至没有 a)
【解决方案3】:

如果未部署 HTTPS,请尝试 sws - 在没有 https 的普通 http 上保护 websocket

https://github.com/InstantWebP2P/sws

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-09
    • 2016-07-02
    • 1970-01-01
    • 2018-03-15
    • 2022-01-05
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多