【问题标题】:How can I hide/protect API keys in my Xcode project build?如何在我的 Xcode 项目构建中隐藏/保护 API 密钥?
【发布时间】:2019-11-30 12:03:18
【问题描述】:

例如,我的 Xcode 项目中的 API 密钥很少。 google API key、fabric key、c​​ontentful SDK key等

我担心这些密钥会从我的构建中泄露出来,因为它们不是免费版本,所以我一直根据使用情况付费。

我在研究中发现有些人可以对 IPA 文件(XCode 构建)进行逆向工程,他们可以从 code/plist 文件中提取 API 密钥并使用它们。

Que-1。有没有更好的方法可以保护我的所有 API 密钥?

Que-2。是否有其他地方可以放置我的 API 密钥,而不是 .plist 文件。

Que-3。 Firebase 是否提供将所有 API 密钥存储到云并直接访问它们的功能。如果是,请指导我。

提前感谢您的帮助。

【问题讨论】:

标签: ios swift firebase google-api xcode10


【解决方案1】:
  1. 逆向工程无法提取硬编码密钥。因此,在您的代码中硬编码您的 API 密钥
  2. 逆向工程无法提取硬编码密钥
  3. 如果需要,您可以使用 Firebase 远程配置在 Firebase 上存储 API 密钥

【讨论】:

  • 任何嵌入在 IPA 中的数据都可能被恶意用户提取。他们可以从手机下载 IPA,然后使用任何十六进制编辑器来查找密钥。这就是为什么永远不应该将密钥嵌入到应用程序的代码中,无论是直接还是通过从不受保护的来源(例如 Firebase 远程配置)下载它们。
  • 我强烈反对硬编码内容不能从构建的可执行文件中提取出来,任何时候将某些东西放入公开发布的程序中,都认为它受到了损害。例如,看看终端中的“字符串”命令。
  • 这不是真的。您可以对其进行测试,但可以创建简单的 IOS 项目,在 viewDidLoad print(API) 中放置一些类似 let API = "ABCDEFG" 的内容,这样编译器就不会删除未使用的变量。归档应用程序后,只需解压缩 .ipa 并在任何十六进制编辑器中查看您的可执行文件。您会在其中找到 API ABCDEFG。
猜你喜欢
  • 1970-01-01
  • 2019-01-12
  • 2015-08-28
  • 2020-03-04
  • 1970-01-01
  • 2021-01-27
  • 2020-04-15
  • 2020-05-12
  • 2022-01-02
相关资源
最近更新 更多