我正在构建一个iOS应用程序,用户使用API密钥向服务器发送请求。当我需要将此密钥作为源代码中的静态字符串时,问题就出现了:
NSSTRING* secretAPIkey = @"12345secretKey";
我已经阅读了逆向工程,其中有人可以查看源代码,基本上。
我的解决方案: 1.多个静态字符串,然后将它们合并为一个
nsstring *1 = @"1";
nsstring *2 = @"2";
nsstring *complete [nsstring stringwithformat:@"%@%@",1,2];
and so on..
还有其他解决方案吗?什么是最好的方法?
答案 0 :(得分:0)
如果您的应用需要互联网连接才能正常工作,那么您可以选择使用https和身份验证从网络服务器获取API密钥,并可选择使用证书固定来防止MITM攻击。
答案 1 :(得分:0)
您可以使用AES加密密钥并将加密版本放入源代码中,然后再解密。请参阅this question。这仍然可以进行逆向工程,但会使其变得更加困难。
答案 2 :(得分:0)
只需创建一个字节数组,并对每个字节进行不同的操作,例如对于第一个字节你的make,第二个 - 减法,第三个 - 乘法等......结果你需要得到你的秘密api密钥"作为一个字符串。所以最初你只有字节数组,任何人都不知道如何将其转换为文本。
或使用任何加密算法。
注意:但是,如果您不通过https工作,任何人都可以嗅探您的请求。此外,如果您使用https,有一种方法如何嗅探您的请求...所以,您最初的问题处理方法不正确。