【问题标题】:How to make the safest Websocket Authentication如何进行最安全的 Websocket 身份验证
【发布时间】:2014-04-13 23:31:02
【问题描述】:
我已经多次看到这个问题得到了回答,但我有一个非常具体的问题。
我目前正在制作一个游戏,其中一个 HTML5 程序正在与服务器端的一个 C++ 程序通信。该游戏还包括价格合理的比赛,因此客户端和服务器之间的低延迟以及安全性应该是重中之重。
这引出了我的问题:在 websocket 会话(TLS 加密)启动时对它进行一次身份验证是否足够安全,或者我应该将 SESSIONID 与从客户端发送到服务器的每条消息一起发送?
【问题讨论】:
标签:
security
session
authentication
websocket
【解决方案1】:
这个问题非常基于意见,不适用于 StackOverflow 问题的性质。
这是我的看法:
WebSockets 协议是在基于连接的 TCP 网络层协议之上实现的。这意味着连接已建立,然后一直持续到它被客户端或服务器关闭。两者之间的拦截是不太可能的。
建立 TCP 连接后,WebSockets 会从客户端发送 HTTP 标头,就像任何其他 HTTP 请求一样,但不会关闭连接,并等待来自服务器的响应,如果一切都“正常”标头用于批准 HTTP 协议升级到 WebSockets 通信。从那时起,WebSockets 就可以在客户端和服务器端进行通信。由于 TCP 连接它是持久连接。因此,为每个请求发送会话是没有意义的,因为它是在建立连接后发送的。
所以不,在每条消息上发送会话详细信息并不是一个好主意,因为这毫无意义。您最好确保恢复会话是安全过程,并且仅获取客户端的 cookie - 不允许以其他用户身份连接。