我和我的朋友拥有一个使用WebSockets双向发送状态更新事件的游戏。我们遇到了一个问题,即用户正在自己的计算机上编写客户端并进行连接。这带来了许多问题,我们尝试了多种预防方法。
现在,我们只尝试读取WebSocket标头,特别是Origin
之类的东西,但是也可以伪造。我们正在考虑实现的另一种方法是生成唯一键,并在加载页面时将其作为标头发送。然后,浏览器将存储该密钥,并将其作为Sec-WebSocket-Key
发送,然后服务器将使该密钥无效,因此无法将其进一步使用。这也是一种有缺陷的方法,因为客户端可以简单地请求站点,读取标头,然后使用该唯一密钥启动WebSocket连接。
我注意到像diep.io这样的站点对此具有严格的安全性,并且以某种方式阻止了浏览器外部的任何外部连接。我什至尝试了所有方法以进入他们的WebSocket,但这根本行不通。
我们还可以使用其他哪些方法来防止使用伪造的WebSocket连接?