Ajax Highscores安全性

时间:2009-06-12 04:21:30

标签: javascript ajax multiplayer

我正在用javascript创建一个塔防游戏,并希望获得高分和其他多人互动。可能有几个玩家同时开始游戏并告诉他们其他人的速度和那种东西的速度。

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

4 个答案:

答案 0 :(得分:2)

人们总是能够在游戏中作弊......你能做的最好就是让人难以作弊。旧Flash游戏的分数非常容易装配,因为分数将通过HTTP请求提交。嗅探流量会显示提交URL以及需要传递哪些变量才能更新分数。我希望它已经改变了。

如果我是你,我会使用一些错误检查代码,这些代码将与最终得分一起传递,以验证分数是否合法。错误检查代码算法应该很难从分数中确定(如果该人正在嗅探它)。 javascript也应该被任意混淆。这远远不够理想,但它应该阻止很多骗子。

答案 1 :(得分:2)

我所看到的最佳做法是进行健全性检查。

记录已用时间,敌人死亡等等......用数据检查得分,看看他们是否加起来。

答案 2 :(得分:0)

这些日子主要是默默无闻。您通常会为每个游戏分配一个唯一的令牌,并形成某种分数和令牌的哈希值,并在提交时进行验证(或在整个游戏过程中持续提交,验证和令牌切换)。

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

答案 3 :(得分:0)

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

  1. Obscurity - 压缩并阻止计算得分字符串的逻辑。分发它并使其难以进行逆向工程。
  2. 随机更改密钥 - 当您的游戏开始时,让javascript请求一个密钥,该密钥可用于加密包含高分等的字符串。服务器还应具有允许您解密消息的私钥。
  3. 完整性检查 - 当用户可能更改分数时,请求您的请求也包含已知边界的终止等数量。服务器将检查哈希并确保数据有效。
  4. 考虑使用彗星服务器 - 由于您将向两个客户端提供实时数据,您最好使用像Orbited或Jetty这样的彗星服务器。这样可以在不崩溃服务器的情况下启用流式传输。
  5. 让它感到沮丧。 '努夫说。