【问题标题】:Develop flash game that requires safe communication with a server开发需要与服务器进行安全通信的 Flash 游戏
【发布时间】:2013-07-29 19:27:54
【问题描述】:

我想开发一个 Flash 游戏(使用 ActionScript 3),它与 Java 服务器通信以保存来自玩家的统计数据、分数和类似的东西。但是如何创建从 flash 文件到服务器的保存通信,以便不可能使用其他工具连接到服务器并伪造操作来作弊。

有什么办法吗?

我的解决方案

游戏本身连接到管理整个游戏的服务器,所有“计算”和类似的东西都在该服务器上完成,用户所做的每一个动作都会发送到服务器,游戏所做的一切都由服务器控制.

所以 Flash 文件真正唯一能做的就是显示图形。

但是:有没有更好更安全的方法来做到这一点?或者这个 sulotion 是最好的解决方案吗?

因为如果 Flash 文件还可以计算游戏中发生的事情而不仅仅是显示图形,那将更容易做到。

请告诉我你将如何解决这个问题。

【问题讨论】:

  • 你不能用秘密盐编码和解码它吗?只有您的 Flash 游戏和您的服务器知道如何对其进行解码(使用这种秘密盐)。用户将无法以这种方式作弊。
  • 但是可以反编译flash文件并获得秘密盐。不会吗?

标签: flash security actionscript client-server


【解决方案1】:

制作完全安全的游戏的唯一方法是在服务器端制作所有游戏逻辑(如您所建议的那样)并验证从客户端发送的每一个动作。客户端角色将只是显示图形并进行任何不影响游戏机制的计算。请记住,客户端的任何代码都是可破解的。

【讨论】:

  • 是的。顺便说一下,flash 真的可以反编译吗?
  • 当然,使用sothink swf反编译器等反编译工具可以很容易地反编译swf。甚至还有在线反编译工具,例如 showmycode.com
  • 即使所有的逻辑都在服务器端,由于玩家的 PC 仍然控制输入,他仍然可以用通常不可能的输入来欺骗游戏(这是 TAS 玩家的众多技巧之一,顺便说一句)。此外,通过拥有所有的逻辑服务器端,我们在输入和显示之间引入了延迟,这对于多人游戏来说是完全可以接受的,但对于带排行榜的单人游戏来说则更具争议。
【解决方案2】:

最终,即使您的服务器完全控制了游戏中发生的事情,您仍然无法确保有人不会作弊。 例如,任何真正想要它的人都可以反编译您的游戏并创建一个可以自动瞄准敌人的“新客户端”。 也就是说,我建议您阅读之前问题的以下答案:

There is nothing you can do to prevent an attacker from forging high scores

Raising the bar for cheating above what a player would deem worth surmounting

【讨论】:

  • 关于您的回答,我有 2 条注意事项:1. 反编译并创建自动瞄准的新客户端将是一项艰巨的工作。 2.你仍然可以尽可能地添加服务器端验证,例如验证每秒杀死多少敌人,他们被射击的频率以及每2次射击之间的时间是否在关卡中相同......等等等等
  • 鉴于可用工具的数量,在 AS3 中反编译-重新编译并不难。如果添加服务器端检查可能会检测到作弊,人们会找到这些检查的解决方法。此外,您添加的检查越多,您的服务器就需要越强大。我们进入了 AAA 游戏的战场之一:开发者和黑客不断地试图相互 1up,没有真正的赢家,双方只有暂时的胜利。如今,反作弊策略无法阻止作弊,只能阻止作弊者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多