如何防止游戏客户端发送假玩家ID?

How to prevent game-client from sending fake player ID?

我正在写一个游戏client/server。我使用 Artemis-odb 和 Netty 来处理实体和网络。每个注册玩家都从数据库中分配了一个自动递增 ID。此 ID 与每个 client/server 事件相关联。

我想防止客户端通过简单的ID欺骗来阻止账号劫持。从理论上讲,防止这种情况的最佳做法是什么?

game/client 不使用 UUID,但如果这是最佳选择,则可以。

谢谢!

播放器 ID 应与服务器上该播放器的网络连接上下文相关联(如果使用 TCP,则为套接字;如果使用 UDP,则为 IP:PORT 对)。

客户端永远不需要将 ID 发送回服务器,因为服务器应该知道 ID 是什么。只要服务器可以将传入的网络数据包与播放器的上下文相关联,就不会存在欺骗的实际风险,尽管我认为 UDP 的风险可能会更高一些。但是,只要您在数据包中包含序列号,就不太可能实际利用。

据我所知,没有任何大型网络游戏实际使用完整的 UUID 作为客户端-服务器协议中的玩家标识符。