如何将数据发送到网络服务器并知道它来自某个应用程序?

时间:2010-10-21 14:47:18

标签: iphone post webserver

我正在尝试将数据从我的应用程序发送到网络服务器。 问题是,我想加密发送的数据,并确保它来自我的应用程序。 (据我所知,到目前为止,如果数据不是通过HTTPS发送的话,很容易解密数据。在独特的应用程序中,除了Apple为每个应用程序提供的应用程序ID之外我没有找到任何东西,但我不知道它是如何工作的)。

发送的数据是用户可以启用的各种高分和成就。问题是用户不必输入任何东西,除了他的用户名,并且具有与UDID相关联的内容,它应该足够了。 但是如何确保它来自我的应用程序?

编辑:在阅读了一些回复后,我仍然不明白: 如果有人提取IPA并反向工程师,他就不能访问我所有的.h和.m所以他可以在那里查找任何内容吗?

3 个答案:

答案 0 :(得分:1)

您可以为iPhone应用生成客户端证书,并使用相互身份验证进行SSL握手。然后,您知道提交给服务器的数据来自应用程序的特定用户,并且您的应用程序正在与正确的服务器进行通信。

关于您编辑的更新,是的,如果有人反向引导您的应用,他们可能会弄清楚高分是如何受到保护的。但是说真的,你期望大多数人为了在游戏中打出高分而有多麻烦?您是否提供现金奖励?

答案 1 :(得分:0)

如果您使用的是HTTPS,那么您只需将POST中的标识符键放入Web服务器,可以是字段,也可以是标识应用程序的HTTP标头。整个连接已加密,因此将受到保护。如果你这样做,你将需要加密密钥,即使在你的二进制文件中,并在你通过连接发送它时解密它,这样就没有人能用十六进制编辑器把它拉出来。

答案 2 :(得分:0)

另一种方法,如果您只想知道数据来自应用程序的真实实例是使用消息验证代码(MAC)。我决定将密钥需要保护的强度作为一种练习给读者 - 你比我更了解你的安全要求。

您可以永远使用CommonCrypto(iOS SDK的一部分)来实际生成MAC。