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