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

时间:2017-04-02 19:05:55

标签: java netty theory artemis

我正在编写游戏客户端/服务器。我使用Artemis-odb和Netty来处理实体和网络。从数据库中为每个注册的播放器分配一个自动增量ID。每个客户端/服务器事件都会关联此ID。

我想阻止客户端轻松进行ID欺骗以阻止帐户劫持。从理论上讲,防止这种情况的最佳做法是什么?

游戏/客户端不使用UUID,但如果这是最好的选择。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

我知道没有主要的网络游戏实际上使用完整的UUID作为客户端 - 服务器协议中的播放器标识符。