我已经多次看到这个问题的回答,但我有一个非常具体的问题。
我目前正在制作一款游戏,其中 HTML5 程序正在与服务器端的 C++ 程序进行对话。该游戏还包括有值(value)的比赛,因此客户端和服务器之间的低延迟以及安全性应该是重中之重。
这引出了我的问题:在 Websocket session (TLS 加密)启动时进行一次身份验证是否足够安全,或者我应该在从客户端发送到服务器的每条消息中发送 SESSIONID?
最佳答案
这个问题非常基于意见,不适用于 StackOverflow 问题的性质。
这是我的观点:
WebSockets 协议(protocol)是在基于连接的 TCP 网络层协议(protocol)之上实现的。这意味着连接已建立,然后持续存在,直到客户端或服务器关闭为止。两者之间的拦截是不太可能的。
建立 TCP 连接后,WebSockets 将从客户端发送 HTTP header ,就像任何其他 HTTP 请求一样,但不会关闭连接,并等待服务器的响应,这就是如果一切“良好” header 用于批准 HTTP 协议(protocol)升级到WebSockets通信。从那时起,WebSockets 就可以在客户端和服务器端用于通信。由于TCP连接是持久连接。因此,为每个请求发送 session 是没有意义的,因为一旦建立连接就会发送 session 。
所以不,在每条消息上发送 session 详细信息并不是一个好主意,因为这样毫无意义。您最好确保恢复 session 是安全的过程,并且仅获取客户端的 cookie - 将不允许以其他用户身份进行连接。
关于security - 如何进行最安全的Websocket认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22307344/