Javascript Ajax高分安全性

Javascript Ajax高分安全性,javascript,ajax,multiplayer,Javascript,Ajax,Multiplayer,我正在用javascript创建一个塔防游戏,并希望获得高分和其他多人互动。可能有几个玩家同时开始游戏,告诉他们其他人跑得有多快,诸如此类 我不知道flash游戏如何发送分数或事件,以确保每个客户发送的信息实际上是正确的,而不仅仅是发送令人难以置信的分数的人。我记得几年前,当flash游戏开始获得高分时,看到不真实(被黑客攻击)的分数是很常见的,而且。。。这很奇怪,不是吗;那么这里的秘密是什么呢?人们在游戏中总是能够作弊的。。。你所能做的就是让作弊变得困难。旧flash游戏的分数很容易操纵,因为

我正在用javascript创建一个塔防游戏,并希望获得高分和其他多人互动。可能有几个玩家同时开始游戏,告诉他们其他人跑得有多快,诸如此类


我不知道flash游戏如何发送分数或事件,以确保每个客户发送的信息实际上是正确的,而不仅仅是发送令人难以置信的分数的人。我记得几年前,当flash游戏开始获得高分时,看到不真实(被黑客攻击)的分数是很常见的,而且。。。这很奇怪,不是吗;那么这里的秘密是什么呢?

人们在游戏中总是能够作弊的。。。你所能做的就是让作弊变得困难。旧flash游戏的分数很容易操纵,因为分数将通过HTTP请求提交。嗅探流量将揭示提交URL以及更新分数需要传递哪些变量。我希望此后情况有所改变


如果我是你,我会使用一些错误检查代码,这些代码将与最终分数一起传递,以验证分数是否合法。错误检查代码算法应该很难根据分数来确定(如果用户正在嗅探)。javascript也应该被任意模糊化。这离理想还差得远,但它应该能阻止大部分作弊者

这几天主要是默默无闻。您通常会为每个游戏分配一个唯一的令牌,并形成分数和令牌的某种散列,并在提交时对其进行验证(或在整个游戏过程中持续提交、验证和令牌切换)


通过javascript进行操作会困难得多。

我看到的最佳实践是进行健全性检查


记录经过的时间、杀死的敌人等。。。用数据检查分数,看看它们是否相加。

使用以下工具的组合,这些工具通常用于防止假分数和进度报告

  • 模糊性-压缩和破坏计算分数字符串的逻辑。分发它,使其难以进行逆向工程
  • 随机更改密钥-当游戏开始时,让javascript请求一个密钥,该密钥可用于加密包含高分的字符串等。服务器还应具有允许您解密消息的私钥
  • 健全性检查-当用户可能更改分数时,让您的请求也包含杀死次数等,这是已知的界限。服务器将检查散列并确保数据有效
  • 考虑使用comet服务器——因为您将向两个客户端提供实时数据,所以最好使用类似Orbited或Jetty的comet服务器。这将在不使服务器崩溃的情况下启用流式传输
  • 让它令人沮丧。”努夫说