我正在使用 websockets 做一些工作,需要解决安全问题。从我所读到的内容来看,显然 SSL 在我的情况下是最好的方法,所以 WSS 是要走的路(这不是问题,只是事实陈述)。
服务器可能会将大量数据流式传输到客户端。这些数据不是私人的或敏感的,所以我不担心有人会嗅到这些数据。我主要担心的是 WS 连接已被验证,因为在服务器上接收命令可能是有害和破坏性的。客户必须是可信的。
服务器将是一个处理能力有限的嵌入式设备。所以我的观点是数据可以通过WS明文传输。
所以我的方法是让客户端通过 wss 连接到服务器,进行身份验证并请求会话密钥。然后客户端将断开 wss 连接,然后通过 ws 连接到服务器,并传递从之前的 wss 连接接收到的会话密钥。如果连接立即传递有效的会话密钥(会话密钥具有适当的到期时间),服务器将仅接受 ws 连接。每个客户端仅允许通过 ws 进行一次连接尝试,并在成功的 wss 连接上进行重置。
所以我的问题是这种方法是否合理,或者我的方法是否会有一些严重的漏洞。我仅限于ws和wss,我在服务器上使用node.js和websocket-node,在客户端使用纯javascript。