我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库,其中必须确保两个非常重要的功能的安全。
- 用户每次游玩都必须扣款
- 我们必须确保提交的分数是玩家实际获得的分数。
解决第一个问题看起来很简单;在每次游戏开始时,我们都会调用 API,从用户的帐户中扣除并返回一个唯一的游戏 ID。当我们提交用户该场比赛的得分时,我们会传递一开始发出的 ID。
第二个让我有点难住了。最初,我考虑了基于 ID 和分数的客户端哈希算法,但很快意识到生成哈希的 Javascript 很容易被逆向工程,即使它被混淆了。此时我考虑了一个生成哈希值的小型闪存组件,但我听说甚至编译过的闪存也可以反编译。
为了增加上下文,我计划用 Ruby 构建服务器端 API。
我很想听听聪明的 Stack Overflow 程序员提供的任何建议。谢谢你的时间!
Edit:下面 Homer6 的答案对于更复杂的游戏来说是一个非常好的解决方案,但不幸的是,这个游戏的简单性不值得采用这样的方法。这是一款游戏时间非常短的游戏,因此分数只是您完成一个关卡所需的时间。
使服务器端成为游戏的一部分。
您可以使 API 仅接收游戏中的操作。所以评分是在服务器端完成的。虽然这会更加密集,但harder假的。
当然,如果人们聪明的话,他们仍然可以为其编写机器人。这也增加了游戏玩法中服务器交互的延迟。如果有一种方法可以使请求非阻塞,那么它可能会起作用。
HTH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)