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

问题描述:

我在写游戏客户端/服务器。我使用Artemis-odb和Netty来处理实体和网络。每个注册的播放器都会从数据库中分配一个自动增量ID。此ID与每个客户端/服务器事件相关联。如何防止游戏客户端发送假玩家ID?

我想阻止客户轻易ID欺骗来阻止帐户劫持。理论上,防止这种情况的最佳做法是什么?

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

谢谢!

+1

不要只使用ID来识别玩家?有很多选项,您可以生成令牌,跟踪播放器的IP/MAC地址,... – UnholySheep

+0

谢谢!这些都是我没有考虑过的出色想法。我知道这个帖子对投票给我的人来说似乎微不足道,但我对网络编程并不熟悉,这些信息在Netty文档中没有讨论。这很糟糕,我希望能成为这个网站上所有内容的专家,并且只会提出一些极其引人深思的问题。我希望那些认为这个问题的人不值得认识到,他们曾经也是初学者。对不起,咆哮过来。我真诚地感谢你的帮助。那意义重大。 – unenergizer

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

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

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

+0

谢谢!我仍然在学习,我还没有在Netty文档中找到这些信息。我只知道永远不会相信客户,这就是为什么我想问问那些比我更有经验的人。真诚的,谢谢。 – unenergizer