首先,我知道没有 100% 确定的解决方案,而且这个问题被问过不止一次。
这些帖子是我最喜欢的第一和第二,但它们太旧了,没有足够的有效解决方案。
我正在用 JavaScript、HTML5 和 CSS3 创建一个社交游戏,并使用画布。出于安全原因,我想知道如何检测用户是否正在使用他的调试器工具。为了防止用户试图更改某些值、速度等。但我可以用 PHP 处理大部分这些东西。
我的游戏是实时游戏。
这是一些反作弊想法的非详尽列表:
- 每次他在服务器端获得积分时检查值,看看它是否一致。
- 加密每个值,然后在服务器端解密。
- 每个值都有一个不同的哈希值,并在每次用户加载游戏时使其随机化。
- 缩小和编码我的整个脚本文件。
- 检测用户是否正在使用调试器并检查他是否在游戏期间调整了窗口大小(但他可以在加载游戏之前打开他的调试器......)。
- 使页面提交完整的游戏重播并检查不一致之处。
- 对于对服务器的每个请求,发送脚本并将其与原始脚本进行比较,以防用户对其进行了修改。
- 将缩小的脚本放在我的 html 页面中,对于每个请求,发回原始脚本以替换实际脚本。
- 在客户端放置一个计时器,在需要时在服务器端发送时间以检查值是否一致(为此,您可以计算分数是否与您设置的最小时间匹配,例如:时间为 47 秒,分数是 1000,对于 40 秒和 50 秒之间的游戏,分数不能超过 1500,所以在这种情况下一切都很好)。
当然还有更多的解决方案要列出。
对于每个解决方案,他都可以访问他的调试器工具。没有适当的方法可以完全阻止使用调试器工具。因此,没有办法 100% 阻止用户不作弊。
至少您可以通过将所有这些解决方案组合在一起来实现几乎反作弊。即使您没有完整的工作系统,也只有一小部分用户会作弊,并且您可以确定您会找到有关如何在游戏中作弊的教程,因此您将能够找到解决方案它发生的时间。