2009-07-22 127 views
1

我在我的代码中有一个字符串,当我与我的服务器通信时,我用它作为秘密。加入这个字符串以确保黑客无法通过搜索我的二进制文件或在运行时查看内存找到它的最佳方法是什么? (如果可能,以防止所有?)在ObjC/C中隐藏/加密字符串的最佳方法是什么?

什么是一些措施,你会建议,至少使这个尽可能difficult?

回答

2

更好的方法是监视服务器的使用情况,并尝试检测与您的应用程序不匹配的使用模式 - 比如知道它总是会提前一种请求,或者您通过的iPhone ID作为一个参数调用不是从多个来源过度使用。您可以在应用程序首次启动时进行初始呼叫,并在服务器上记录电话ID以允许其他呼叫。

有多种方法可以解决这个问题,但它们都是基于服务器的 - 客户端中的任何内容都可以并且会被黑客看到。客户说的任何事情都必须被视为谎言,有时候会是这样。

1

从技术上讲,这是不可能的,在连接之前解密之后,至少内存可以擦除代码,因为代码中已经有了所需的全部解密算法。反汇编将允许直接从二进制数据解密数据。

实际上,由于这是一个封闭的平台(根据您使用iphone标签的事实),它只会是主要的黑客,即使它只是二进制文件中的一个纯十六进制字符串,也会设法得到它。

+0

你会建议什么样的措施,至少使这个尽可能困难? – erotsppa 2009-07-22 15:14:51

+0

只需将字符串放在适当的位置 - 对于扫描字符串的用户来说,这将毫无意义。然后总是使用HTTPS与您的服务器进行通信,因此无法窥探。当然,那么你必须支付使用HTTPS的性能损失,但这是保持它的秘密的唯一方法。 – 2009-07-22 15:18:35

相关问题