隐藏源代码

时间:2016-10-29 19:14:16

标签: ios objective-c api token

我正在构建一个iOS应用程序,用户使用API​​密钥向服务器发送请求。当我需要将此密钥作为源代码中的静态字符串时,问题就出现了:

NSSTRING* secretAPIkey = @"12345secretKey";

我已经阅读了逆向工程,其中有人可以查看源代码,基本上。

我的解决方案: 1.多个静态字符串,然后将它们合并为一个

nsstring *1 = @"1";
nsstring *2 = @"2";
nsstring *complete [nsstring stringwithformat:@"%@%@",1,2];
and so on..
  1. 将其保存在info.plist。
  2. 不确定钥匙串是否在所有应用程序周围都是全局的,因为所有用户都需要相同的API密钥。
  3. 还有其他解决方案吗?什么是最好的方法?

3 个答案:

答案 0 :(得分:0)

如果您的应用需要互联网连接才能正常工作,那么您可以选择使用https和身份验证从网络服务器获取API密钥,并可选择使用证书固定来防止MITM攻击。

答案 1 :(得分:0)

您可以使用AES加密密钥并将加密版本放入源代码中,然后再解密。请参阅this question。这仍然可以进行逆向工程,但会使其变得更加困难。

答案 2 :(得分:0)

  1. 只需创建一个字节数组,并对每个字节进行不同的操作,例如对于第一个字节你的make,第二个 - 减法,第三个 - 乘法等......结果你需要得到你的秘密api密钥"作为一个字符串。所以最初你只有字节数组,任何人都不知道如何将其转换为文本。

  2. 或使用任何加密算法。

  3. 注意:但是,如果您不通过https工作,任何人都可以嗅探您的请求。此外,如果您使用https,有一种方法如何嗅探您的请求...所以,您最初的问题处理方法不正确。