【发布时间】:2011-11-21 16:36:41
【问题描述】:
背景
使用在线高分列表的游戏的一个问题是它们经常被滥用。游戏将当前分数发送到服务器,狡猾的用户可以分析协议/方案并发送虚假分数。这就是为什么一些高分榜以 999999 分高居榜首的原因。
此问题的常见解决方案是以某种方式加密分数,并在此基础上放置other mechanisms to recognize false scores。但即使你这样做了,发送分数的还是客户端,并且客户端存在于用户的计算机中并且可以进行逆向工程。
我的想法
我正在设计/考虑一个游戏(我会完成的,是的,对 :)),您可以在其中配置您的播放器/机器人,并提供有关如何执行任务的说明(以及何时这些说明是要进行)。当按下“开始”按钮时,游戏会运行指令。最后得到一个结果,如果成功,则获得一个分数。
那么,怎么样:不是提交分数,而是将实际指令发送到服务器,在服务器上运行它们,使用相同的实现。然后服务器计算分数并将用户放在高分列表中。
问题
有没有办法滥用这个想法来获得假分数?
我知道这可能不是一个新想法。但如果它有效,它也不是不可能扩展到其他游戏,在那里可以记录所有用户操作。
【问题讨论】:
-
想法:1)您将不得不发送 很多 更多数据,这会给服务器带来更大的压力,并且 2)它“更好”,因为它更难打破,但如果有人真的很投入,他们仍然可以做到。
-
请务必在说明中添加某种限制,以免您的用户受到 DDoS 攻击。例如,编写一个无限循环很容易成为问题。添加一个简单的限制,例如要执行的最大步骤数,可能会有所帮助。
-
是的,压力/DDoS方面是我没有考虑到的一个维度......
-
@quasiverse 你能扩展你对第 2 点的推理吗?
-
@PeterJaric 您正在发送游戏中的事件,而不仅仅是一个分数,因此试图打破它的人必须弄清楚所有这些事件是什么以及如何操纵它们,这比发送一个更难假分数(除非你的游戏真的简单或你的分数真的复杂)。
标签: anti-cheat