javascript - 保护客户端 API

标签 javascript ruby flash security api

我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库,其中必须保护两个非常重要的功能。

  1. 用户必须为每次播放记账
  2. 我们必须确保提交的分数是玩家实际获得的分数。

解决第一个问题似乎很简单;在每次播放开始时,我们都会点击 API,从用户帐户中扣除并返回一个唯一的播放 ID。当我们提交用户对该游戏的评分时,我们会传递开始时发布的 ID。

第二个让我有点难过。最初我考虑了一种基于 ID 和分数的客户端散列算法,但很快意识到生成散列的 Javascript 很容易被逆向工程,即使它被混淆了。在这一点上,我考虑了一个生成哈希的小闪存组件,但我听说即使是编译的闪存也可以反编译。

为了增加上下文,我计划用 Ruby 构建服务器端 API。

我很想听听聪明的 Stack Overflow 程序员必须提供的任何建议。感谢您的宝贵时间!

编辑: 下面 Homer6 的回答对于更复杂的游戏来说是一个很好的解决方案,但不幸的是,这个游戏的简单性不值得这样的方法。这是一款基于游戏时间的非常短的游戏,因此分数就是您完成一个关卡所花费的时间。

最佳答案

让服务器端成为游戏的一部分。

您可以让 API 仅接收游戏中的操作。所以评分是在服务器端完成的。虽然这会更加密集,但它更难伪造。

当然,如果聪明的话,人们仍然可以为它编写机器人。这也将服务器交互的延迟添加到游戏玩法中。如果有一种方法可以使请求成为非阻塞的,它可能会起作用。

HTH

关于javascript - 保护客户端 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5800349/

相关文章:

javascript - 当资源发布到根文件夹时,Animate CC HTML5 横幅不起作用

javascript - 在内容可编辑的 DIV 中将 bb 代码包裹在选定的文本周围

ruby-on-rails - Ruby on Rails : getting associated values to display

java - Adobe Actionscript (Flex Framework) 的蓝牙 SPP 怎么样?

javascript - 未使用 angularjs 触发 WebSocket 回调

javascript - 使用 d3.js 计算平均 json

ruby-on-rails - rails destroy scaffold leaves 后 table

ruby - 如何将 Ruby 哈希 "up"中的属性移动一级

javascript - 使用 Flash + JavaScript 进行客户端压缩

regex - String.replace 是否比 String.split ... String.join 在 ActionScript 3 中更快?