我正在为移动游戏设计服务器后端。 iPhone和Androids在Linux服务器上与我的PHP脚本交互以进行API调用。
基本上电话"知道"他们注册时的游戏ID(他们被分配了一个),现在这就是我用来进行身份验证的内容。例如,如果用户的电话是游戏的主持人(如果他们的id与主持人表中的条目相关联),他们可以编辑该游戏的规则等。
但是,我觉得这不安全。有人可以轻松地为我的脚本制作HTTP POST调用并在游戏中作弊。
我决定实施SSL来加密在手机和服务器之间来回传递的消息。如何找出要购买的SSL证书类型?我在哪里可以学习设置一个?我没有这方面的经验。一些经验丰富的移动开发人员对最佳/最简单/最具成本效益的建议是非常好的。
答案 0 :(得分:4)
您要做的是使用经过相互身份验证的SSL,以便您的服务器只接受来自您游戏的传入连接,而您的游戏应用只会与您的服务器进行通信。由于您同时控制客户端(游戏应用程序)和服务器,因此您无需购买任何东西,只能依赖自签名证书。
这是高级方法。创建自签名服务器SSL证书并在Web服务器上部署。您可以使用Android SDK附带的keytool来实现此目的。然后创建一个自签名客户端,并将其作为资源在应用程序中包含的自定义密钥库中部署到您的应用程序中(keytool也会生成它)。您也可以使用iOS客户端游戏执行此操作,但我不太确定确切的方法,因为我主要使用Android dev。将服务器配置为要求客户端SSL身份验证,并仅接受您生成的客户端证书。配置客户端使用该客户端证书来标识自己,并且只接受您在服务器上安装的那个服务器端证书。
如果您的游戏以外的某人/某些人尝试连接到您的服务器,则不会创建SSL连接,因为服务器将拒绝未提供您的应用中包含的客户端证书的传入SSL连接。< / p>
这是一个循序渐进的答案,比这里所保证的要长得多。我建议分阶段执行此操作,因为网络上有关于如何在Android和iOS(服务器端和客户端)处理自签名SSL证书的资源。我的书Application Security for the Android Platform中还有一个完整的演练,由O'Reilly出版。