HTTP上的WSS与HTTPS上的WSS

Isa*_*aac 45 security https http websocket

我已经读过WS只适用于HTTP,而且WSS适用于HTTP和HTTPS.WSS(安全Web套接字)连接在HTTP服务器上是否与在HTTPS服务器上一样安全?如果网站/服务器不是通过TLS/SSL加密的Web Socket安全(WSS)连接?

Tak*_*aki 78

"wss适用于http和https" ??? 这是一个奇怪的短语.

wss是安全的只是因为它意味着"通过https的 WebSocket协议".WebSocket协议本身并不安全.没有Secure WebSocket协议,但只有"基于http的WebSocket协议"和"基于https的WebSocket协议".另见这个答案.

作为nv-websocket-client(用于Java的WebSocket客户端库)的作者,我也怀疑"如果打开安全WebSocket连接的HTML/JavaScript来自非安全HTTP,WebSocket连接仍然是安全的",由oberstet回答.

阅读RFC 6455(WebSocket协议)以获得正确的答案.要成为真正的工程师,请不要避免阅读RFC.只搜索技术博客和StackOverflow的答案永远不会把你带到正确的地方.

  • 由浏览器通过HTTP(不是HTTPS)加载的包含JavaScript的HTML页面可以同时打开non.secure(ws)和secure(wss).通过HTTPS加载的HTML页面只能打开wss连接(而不是ws连接).你不必相信我:试试吧. (7认同)

obe*_*tet 37

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

是.

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

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

  • 简单的TCP连接(非TLS)怀疑是t和中间人攻击. (5认同)
  • 非 TLS 连接会受到 TLS 连接不会受到的各种攻击。因此,非 TLS 连接并不像 TLS 连接一样安全。 (2认同)
  • 似乎这里有很多混乱;) 重点是,对于浏览器,涉及 2 个连接:a) 一个通过 HTTP 或 HTTPS 获取 HTML 和 JS 文件的连接,以及 b) 实际的 WebSocket 连接,只有 _starts_ 作为HTTP 或 HTTPS 连接。现在您可以 a) 通过 HTTP 完成,而 b) 通过升级到 WSS 的 HTTPS 完成。但是你不能 a) 通过 HTTPS,然后 b) 通过 HTTP 没有升级到 WSS,而是使用普通的 WS。对于 _browser_ WebSocket 客户端,这是明确禁止的(并且浏览器会强制执行)。非浏览器 WebSocket 客户端甚至没有 a) (2认同)