【问题标题】:Security: Achievement and score API in AS3安全性:AS3 中的成就和分数 API
【发布时间】:2011-04-29 06:11:30
【问题描述】:

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

我想在 AS3 中开发一个 API,它允许开发人员(作为开始)执行以下操作:

  1. 显示一个对话框,让用户登录他们的“帐户”(托管在我的网站上)。
  2. 向网站发送分数/值并将其归因于登录用户。
  3. 解锁成就(成就将由开发者在 Web 界面中设置 - 在那里他们还将获得某种类型的密钥以用于其 API。
  4. 显示高分、游戏中的其他玩家资料等(基本上显示游戏中的所有统计数据)。

一切都很容易,可以直接开发。然而;令人沮丧的是安全性。我并不期待一个我完全意识到不可能的坚不可摧的解决方案,但是解决这个问题的防御性方法是什么?

以下是我当场能想到的问题:

  1. 最大的问题 - 人们通过中间人攻击窃取 API 密钥。
  2. 高分注入,虚假成就解锁。
  3. 反编译 SWF 并窃取 API 密钥。
  4. 使用 API 密钥创建虚拟闪存应用程序并发送高分等随机数据。
  5. 更改 API 本身,以便您无需登录等。

我的一个想法是将我的 API 转换为组件,因此无法访问代码(除非您反编译)。这里的问题是它对开发人员不友好,尽管它可以让我为 UI 创建自己的图形(而不是编写很多很多精灵)。

除非有很好的反编译保护,否则私钥/公钥将不起作用。

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

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

【问题讨论】:

    标签: actionscript-3 api flash security


    【解决方案1】:

    【讨论】:

    • 类似 - 尽管我的问题提出了大量额外的安全问题。此线程仅用于高分提交系统。
    • 没错,但我仍然建议您阅读所有热门答案,因为它会对您有很大帮助;)
    【解决方案2】:
    1. 反对中间人 HTTPS 似乎是唯一的选择。它可能有其漏洞,但它比任何自制解决方案都要好。您需要来自授权中心的实际证书的问题,因为基于 ActiveX 的 Flash 插件将不信任自签名证书。
    2. 如果不进行反编译应该是不可能的
    3. 具有相当高的设置(代码执行路径混淆和加密字符串)的 SecureSWF 应该可以击败大多数反编译器。当然,可以使用十六进制编辑器检查 SWF,但这需要非常坚定的黑客。
    4. 如果不进行反编译应该是不可能的
    5. API 应该在服务器上,任何 API 函数都需要用户上下文(通过 HTTPS 加载)

    还为闪存共享对象\cookies 添加加密。我已经使用简单的十六进制编辑器成功地修改了一些存档游戏,因为它们只是 AMF 格式的对象。加密将取决于 SWF 反编译,但由于我们使用的是 SecureSWF... 或将存档游戏移动到服务器上。

    【讨论】:

    • 这似乎是我将得到的结束 - 谢谢。关于共享对象的一个​​非常好的说明。
    【解决方案3】:

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

    【讨论】:

    • 这确实是我想到的方法。 API 本身显示服务器返回的内容并发送非常基本的信息以及 API 密钥或类似的东西。 PHP/MySQL 可以处理剩下的。
    • @Marty Wallace - 此外,如果您不怕失去虚假用户,您可以禁止(24 小时或更长时间)任何发送虚假数据的帐户,以防止连续进行黑客算法测试
    • 我同意了,webservices + AS3 wrapper/lib,webservices也可以通过JS等其他wrapper访问
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多