WebSocket 入门与安全边界

理解 WebSocket 的连接机制、握手流程和常见风险,帮助初学者建立对实时通信安全边界的认知。

写在前面:合法学习边界

本文只讲原理和防御。请不要把相关测试用于真实系统。

一、WebSocket 解决什么问题

HTTP 是请求-响应模型。很多场景需要服务器主动推数据,例如聊天、行情、在线协作。

这时就需要长连接协议。

WebSocket 就是为这类场景设计的。

1
2
3
TCP 长连接
全双工通信
低延迟推送

二、WebSocket 的握手流程

连接开始仍是 HTTP,只是带上了升级头。

常见握手头:

1
2
3
4
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key
Sec-WebSocket-Version: 13

服务器成功后返回:

1
HTTP/1.1 101 Switching Protocols

之后不再走 HTTP 语义,而是在同一条连接上收发帧。

三、常见的安全问题

1
2
3
4
5
明文传输
跨站连接滥用
缺少身份校验
消息过大
没有频率限制

其中最常见的是:

1
2
HTTP 下明文传输
CORS/Origin 校验不严

四、防御建议

1
2
3
4
5
使用 wss://
校验 Origin
做鉴权和权限检查
限制消息大小和频率
对敏感消息加密

五、报告中的正确写法

示例:

1
2
3
发现:wss 连接的 Origin 校验缺失,导致跨站可建立连接并接收用户消息。
风险:可能触发跨站 WebSocket 劫持。
建议:服务端校验 Origin,并按用户权限过滤消息。

六、小结

WebSocket 是实时通信的基础,但默认不等于安全。身份、授权和传输层都要单独做对。