写在前面:合法学习边界
本文只讲原理和防御。请不要把相关测试用于真实系统。
一、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 是实时通信的基础,但默认不等于安全。身份、授权和传输层都要单独做对。