安全性:AS3中的成就和得分API

时间:2011-04-29 06:11:31

标签: actionscript-3 api flash security

多年来,在Flash游戏开发方面,我已经成为一名超级书呆子。现在我正在考虑利用我的技能帮助其他游戏开发者。

我想在AS3中开发一个API,这将允许开发人员(作为一个开始)做以下事情:

  1. 显示一个对话框,允许用户登录其“帐户”(托管在我的网站上)。
  2. 将分数/值发送到网站并将其归因于登录用户。
  3. 解锁成就(成就将由开发人员在网络界面中设置 - 这也是他们将获得某种类型的密钥以与其API一起使用的地方。
  4. 在游戏中显示高分,其他玩家档案等(基本上显示游戏中的任何统计数据)。
  5. 所有这些都很容易直接发展。然而;安全感变得令人沮丧。我并不期待一个我完全清楚不可能的坚不可摧的解决方案,但是防御方式是什么?

    以下是我可以在现场思考的问题:

    1. 最重要的一个人 - 通过中间人攻击窃取API密钥。
    2. 高分注射,虚假成就解锁。
    3. 反编译SWF并窃取API密钥。
    4. 使用API​​密钥创建虚拟闪存应用程序并发送高分数等随机数据。
    5. 更改API本身,因此您无需登录等。
    6. 我曾经想过将我的API转换为组件,因此无法访问代码(除非您反编译)。这里的问题是它对开发人员不友好,虽然它允许我为UI创建自己的图形(而不是编码许多精灵)。

      除非有非常好的反编译保护,否则私钥/公钥将无效。

      我开始怀疑这个想法是不是死路一条。

      关于保护这个(或部分)的任何建议都会很棒。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

客户端永远不够安全,所以我建议将所有逻辑都带到服务器,将客户端简化为UI。
如果由于网络超时而无法实现 - 仅使用“user_action - game_state”对的日志发送分数/成就,并在服务器上验证它。

答案 2 :(得分:0)

  1. 反对中间人HTTPS似乎是唯一的选择。它可能有其漏洞,但它比任何自制解决方案都要好。您需要来自授权中心的实际证书的问题,因为基于ActiveX的Flash插件不会信任自签名证书。
  2. 没有反编译就不可能
  3. 具有相当高设置的SecureSWF(代码执行路径混淆和加密字符串)应该胜过大多数反编译器。当然,可以使用十六进制编辑器检查SWF,但这需要非常确定的黑客。
  4. 没有反编译就不可能
  5. API应位于服务器上,任何API函数都需要用户上下文(由HTTPS加载)
  6. 还要为flash共享对象\ cookies添加加密。我使用简单的十六进制编辑器成功地修改了一些存档游戏,因为它们只是AMF格式的对象。加密将取决于SWF反编译,但由于我们使用的是SecureSWF ...或者在服务器上移动savegames。