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

Actionscript 3 安全性:AS3中的成就和得分API,actionscript-3,api,flash,security,Actionscript 3,Api,Flash,Security,这些年来,在flash游戏开发方面,我已经变成了超级怪人。现在我正在考虑利用我的技能来帮助其他游戏开发者 我想在AS3中开发一个API,它将允许开发人员(作为开始)执行以下操作: 显示一个对话框,让用户登录到他们的“帐户”(托管在我的网站上) 向网站发送分数/值,并将其归属于登录用户 解锁成就(成就将由开发人员在web界面中设置-在该界面中,他们还将获得某种类型的密钥,以便与API一起使用 在游戏中显示高分、其他玩家档案等(基本上显示游戏中的任何统计数据) 所有这些都很容易一下子开发出来。然而,

这些年来,在flash游戏开发方面,我已经变成了超级怪人。现在我正在考虑利用我的技能来帮助其他游戏开发者

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

  • 显示一个对话框,让用户登录到他们的“帐户”(托管在我的网站上)
  • 向网站发送分数/值,并将其归属于登录用户
  • 解锁成就(成就将由开发人员在web界面中设置-在该界面中,他们还将获得某种类型的密钥,以便与API一起使用
  • 在游戏中显示高分、其他玩家档案等(基本上显示游戏中的任何统计数据)
  • 所有这些都很容易一下子开发出来。然而,让人沮丧的是安全性。我并不期望有一个我完全知道是不可能的坚不可摧的解决方案,但是防御性的方法是什么

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

  • 大人物通过中间人攻击窃取API密钥
  • 高分注射,虚假成就解锁
  • 反编译SWF并窃取API密钥
  • 使用API键创建一个虚拟flash应用程序并发送随机数据,如高分
  • 修改API本身,使您无需登录,等等
  • 我的一个想法是将API转换为组件,这样就无法访问代码(除非您进行反编译)。这里的问题是,它对开发人员不友好,尽管它允许我为UI创建自己的图形(而不是编写许许多多的精灵)

    除非有很好的反编译保护,否则私钥/公钥将无法工作

    我开始怀疑这个想法是不是死胡同


    任何关于保护此线程(或其部分)的建议都非常好。

    如果您还没有这样做,请先查看此线程:

    客户端永远不够安全,因此我建议将所有逻辑都放到服务器上,将客户端简化为UI。
    如果由于网络超时而无法完成,则仅使用成对的日志“用户操作-游戏状态”发送分数/成绩,并在服务器上进行验证

  • 对抗中间人HTTPS似乎是唯一的选择。它可能有其漏洞,但比任何自制的解决方案都要好。问题是,您需要授权中心提供实际证书,因为基于ActiveX的Flash插件不信任自签名证书
  • 如果没有反编译,就不可能实现
  • 具有合理高设置(代码执行路径模糊和加密字符串)的SecureSWF应该可以击败大多数反编译器。当然,可以使用hex editor检查SWF,但这需要非常坚定的黑客
  • 如果没有反编译,就不可能实现
  • API应该在服务器上,任何API函数都需要用户上下文(通过HTTPS加载)

  • 还向flash shared objects\Cookie添加加密。我已经使用简单的十六进制编辑器成功地更改了一些savegames,因为它们只是AMF格式的对象。加密将取决于SWF反编译,但因为我们正在使用SecureSWF…或在服务器上移动savegames。

    类似-尽管我的问题提出了大量额外的问题安全性问题。此线程仅用于高分提交系统。是的,但我仍然建议您阅读所有最重要的答案,因为它将对您有很大帮助;)这确实是我想到的方法。API本身显示服务器返回和发送的基本信息以及API密钥或类似信息。PHP/MySQL可以处理其余的问题。@Marty Wallace-如果你不怕失去假冒用户,你可以禁止(24小时或任何时候)任何发送虚假数据的帐户,以防止连续的黑客算法测试。我同意,webservices+AS3 wrapper/lib,Web服务也可以通过其他包装器(如JSF)进行访问。看来这是一个很好的结局——谢谢。关于共享对象的一个非常好的注释。