我要建一个客户/服务器的iPhone游戏,我要让第三方客户访问服务器。这是两个原因:第一,我的收入模式是出售客户和给该服务,和第二,我想要避免扩散的客户,促进作弊。

我写的第一版本的服务器在轨道,但我在考虑搬到爱尔兰在一些点。

我考虑的两种方法:

  1. 产生一个"username"(就是说,一个GUID)和哈希它(SHA256或MD5)与一个秘密附带的应用程序和使用的结果为"密码"。当客户连接的服务器,都是通过HTTP发送基本的身份验证过https。服务器的散列的用户名相同的秘密并确保他们的匹配。

  2. 船客户证书的iPhone应用程序。服务器被配置到需要客户的证书。

第一种办法的优点是简单的、低开销,并可能会更容易混淆的秘密应用程序。

第二种方法是很好的测试和验证,但可能更多的开销。然而,我的知识的客户证书是在"读过有关它在达美航空公司在飞机杂志"的水平。多大的带宽和处理开销,这将产生?实际数据的传送的请求是一个千字节。

有帮助吗?

解决方案

有你的游戏的用户进行身份验证与他们的帐户 保护身份验证, 授权他们做游戏的国家修改在你的服务器。

如果你不能管理的用户进行身份验证,你会需要进行身份验证你的游戏中的应用实例。具有认证的凭据嵌入的二进制将是一个糟糕的想法,应用海盗行为是普遍的,并将呈现你的方法的高度不安全。我这么问题 如何限制苹果手机应用程序的海盗行为 可能使用你其它方式。

其他提示

没有办法是完美--但挑战与反应是更好的比一个关键。

证书应当使用的挑战/响应。你发送一个随机的字符串中,它加密它使用证书的私人钥匙,然后你把它找回来,并解它与公共关键。

这取决于如何很好的支持的东西是在iPhone上,实施事会之间的微不足道的和具有挑战性的。

一个很好的中间道路,我使用xor。它是稍微更加安全,比一个密码、容易实现,至少需要一两个小时的奉献精神,以破解。

  1. 你的应用船只与一些建立在(key)。
  2. 当一个应用程序连接到你,你随机产生一些(具有相同编号的位作为关键),并发送到电话
  3. 该应用程序的数量、异或是它与关键和发送的结果回来。
  4. 在服务器上你的异或返回的结果与关键的,这应导致在你原来的随机数。

这只是稍微黑客防,但可采用其他技术,以使它更好像变化的关键每次更新软件,隐瞒的随机数与其他一些随机数,等等。有很多技巧,以隐藏这一点,但最终黑客们会找到它。改变方法,在每次更新可能的帮助。

无论如何,异或是一个侵但它的工作的情况下发送密码是只是有点容易被破解。

之间的差异和公共关键的是,异或是很容易可逆的只是监测成功的对话、公共关键是(理论上的)不可逆没有大量资源和时间。

谁是你的对手在这里?这两种方法未能防止破裂的应用程序副本连接到服务器。我认为这是最常见的问题的iPhone游戏(或一般的)发展用于支付的应用程序。

然而,这可能保护服务器从其他非iPhone客户,因为它阻碍程序员从反向工程网络组之间的接口的iPhone和服务器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top