在源代码中隐藏 API 密钥

问题描述 投票:0回答:3

我正在构建一个 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 密钥。

还有其他解决方案吗?最好的方法是什么?

ios objective-c bearer-token
3个回答
0
投票

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


0
投票

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


0
投票
  1. 只需创建一个字节数组并对每个字节进行不同的操作,例如,对第一个字节进行加法,对第二个字节进行减法,对第三个字节进行乘法等等...因此,您需要获得“秘密” api key”作为字符串。所以最初你只有字节数组,任何人都不知道如何将其转换为文本。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.