【问题标题】:How to prevent game-client from sending fake player ID?如何防止游戏客户端发送假玩家ID?
【发布时间】:2017-04-02 19:05:55
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 不要只使用ID来识别玩家?有很多选项,你可以生成令牌,跟踪玩家的 IP/MAC 地址,...
  • 谢谢!这些都是我没有考虑过的好主意。我知道这篇文章对于那些投票给我的人来说可能看起来微不足道,但我是网络编程的新手,Netty 文档中没有讨论这些信息。太糟糕了,我被期望成为这个网站上所有事情的专家,并且只提出非常发人深省的问题。我希望那些认为这个问题不值得的人意识到他们曾经也是一个初学者。不好意思吐槽了。我衷心感谢您的帮助。这意味着很多。

标签: java netty theory artemis


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!我还在学习,我还没有在 Netty 文档中找到这些信息。我只知道永远不要相信客户,这就是为什么我想问那些比我更有经验的人。真诚的,谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2014-01-13
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2016-09-29
相关资源
最近更新 更多