在启动时安全地提供重要的游戏内容

时间:2012-01-27 01:11:58

标签: android security in-app-purchase

好的,这是交易:

用户可以购买黄金'在应用内部,具有应用内结算功能。为了确保没有人欺骗系统,我不想存储一个人手机上的金币数量。我已经需要在启动时联系服务器,所以我想我可以发送用户当时拥有的金额。但是,我想不出一种方法可以使这个“安全”(即,如何防止用户伪造服务器响应并给自己提供金币)。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

这里最好的解决方案是在游戏和服务器之间部署相互认证的SSL。您可以在此处使用自签名证书,这样您就无需从CA购买任何证书。这将确保您的游戏仅从您的合法服务器接收余额信息(将游戏的SSL系统配置为仅接受您的服务器正在使用的自签名证书),并且您的服务器仅接受来自您游戏的查询(将您的服务器配置为仅访问应用程序中部署的自签名证书作为客户端身份验证的资源。在O'Reilly出版的Application Security for the Android Platform中,有关如何为Android执行此操作的完整分步说明。

答案 1 :(得分:0)

我认为您可以使用私钥/公钥对生成的签名(可能基于黄金数量,用户数和时间戳)“签署”响应。这样,您可以在客户端验证响应实际来自您的服务器。或类似的东西。

答案 2 :(得分:0)

如果有人从服务器上取消响应,为什么会出现问题?他们只是在愚弄自己有多少黄金;真实服务器仍然知道实数。

除非你的服务器稍后询问客户它有多少金币并相信它得到的答案,否则这应该不是问题。服务器应始终具有权威值。