我是否应该担心我的 API 密钥会从 iOS 应用程序中提取出来
Should I worry about my API Keys being extracted from the iOS app
我需要从我的应用向 Google 书籍 API 提出请求,其中包括 URL 中的 API 键。
我考虑过在我的应用程序中将其创建为文件私有变量,但这是一个大问题,因为它随后会被上传到 Github。
然后我考虑了环境变量,但我听说如果应用不是 Xcode 的 运行,它们就不会包含在内。
我知道可以通过这种方式提取密钥,但我应该担心吗?
无论如何,用户不能只使用 Wireshark 或类似的东西并在 URL?
中看到密钥
而且我可以限制密钥,使其仅在从我的 Bundle ID 调用时有效。
您认为拨打电话的最佳选择是什么?我的意思是除此之外,该应用程序每周几乎没有 10 次下载,所以这不是什么大问题,对吧?
这是否是一个问题完全取决于您的用例和威胁模型。考虑您的 api 键 public 如果您以任何方式包含或发送它 in/from 您的应用程序,并考虑人们可以用它做什么。它们会对您造成何种程度的伤害?这会给你带来影响。他们会受到激励吗,例如,他们会以某种方式获得经济利益吗?这估计了这种情况发生的可能性。这一起,影响 x 可能性 = 风险,您可以接受(不采取任何措施)、减轻(减少影响或可能性)、消除(修复)或转移(例如购买某种保险)。
至于缓解措施,您能否限制 api 键范围,以便只能在 api 上使用它完成必要的事情?你能设置速率限制吗?监控、报警?我不熟悉书籍 api,但这些可能是缓解控制。
为了消除风险,你不应该把api密钥放在应用程序中。您可以设置自己的服务器,该服务器将保存 api 键,并且几乎会将请求转发到 Books api,并使用 api 键进行扩充。请注意,尽管您仍然需要在您的服务器中进行某种身份验证和访问控制,否则攻击者可以将其用作 oracle 来执行实际 Books api 中的任何操作,就像他们拥有密钥一样,只有在这种情况下他们才不需要它。这个角色也可以通过某种 api 网关来实现,它也可以将数据添加到 api 查询。
消除风险的成本显然更高。防御应该与风险成正比,所以你必须决定是否值得。
我需要从我的应用向 Google 书籍 API 提出请求,其中包括 URL 中的 API 键。
我考虑过在我的应用程序中将其创建为文件私有变量,但这是一个大问题,因为它随后会被上传到 Github。
然后我考虑了环境变量,但我听说如果应用不是 Xcode 的 运行,它们就不会包含在内。
我知道可以通过这种方式提取密钥,但我应该担心吗? 无论如何,用户不能只使用 Wireshark 或类似的东西并在 URL?
中看到密钥而且我可以限制密钥,使其仅在从我的 Bundle ID 调用时有效。
您认为拨打电话的最佳选择是什么?我的意思是除此之外,该应用程序每周几乎没有 10 次下载,所以这不是什么大问题,对吧?
这是否是一个问题完全取决于您的用例和威胁模型。考虑您的 api 键 public 如果您以任何方式包含或发送它 in/from 您的应用程序,并考虑人们可以用它做什么。它们会对您造成何种程度的伤害?这会给你带来影响。他们会受到激励吗,例如,他们会以某种方式获得经济利益吗?这估计了这种情况发生的可能性。这一起,影响 x 可能性 = 风险,您可以接受(不采取任何措施)、减轻(减少影响或可能性)、消除(修复)或转移(例如购买某种保险)。
至于缓解措施,您能否限制 api 键范围,以便只能在 api 上使用它完成必要的事情?你能设置速率限制吗?监控、报警?我不熟悉书籍 api,但这些可能是缓解控制。
为了消除风险,你不应该把api密钥放在应用程序中。您可以设置自己的服务器,该服务器将保存 api 键,并且几乎会将请求转发到 Books api,并使用 api 键进行扩充。请注意,尽管您仍然需要在您的服务器中进行某种身份验证和访问控制,否则攻击者可以将其用作 oracle 来执行实际 Books api 中的任何操作,就像他们拥有密钥一样,只有在这种情况下他们才不需要它。这个角色也可以通过某种 api 网关来实现,它也可以将数据添加到 api 查询。
消除风险的成本显然更高。防御应该与风险成正比,所以你必须决定是否值得。