【问题标题】:Should I worry about my API Keys being extracted from the iOS app我是否应该担心从 iOS 应用程序中提取我的 API 密钥
【发布时间】:2018-08-01 21:06:35
【问题描述】:

我需要从我的应用程序中向 Google Books API 发出请求,其中包括 URL 中的 API 密钥。

我想在我的应用程序中将其创建为文件私有变量,尽管这是一个大问题,因为它会被上传到 Github。

然后我想到了环境变量,但我听说如果应用程序不是由 Xcode 运行,它们就不包含在内。

我知道这样可以提取密钥,但我应该担心吗? 用户难道不能只使用 Wireshark 或类似的东西来查看 URL 中的密钥吗?

我可以限制密钥,使其仅在从我的 Bundle ID 调用时才有效。

您认为拨打电话的最佳选择是什么?我的意思是除此之外,该应用每周几乎没有 10 次下载,所以这不是什么大问题,对吧?

【问题讨论】:

    标签: ios security environment-variables api-key google-books


    【解决方案1】:

    这是否是一个问题完全取决于您的用例和威胁模型。如果您在应用程序中包含或以任何方式发送它,请考虑公开您的 api 密钥,并考虑诸如人们可以用它做什么之类的事情。它们会对您造成什么程度的伤害?这会给你带来影响。他们会受到激励吗?例如,他们是否有某种经济利益?这估计了这种情况发生的可能性。综合起来,影响 x 可能性 = 风险,您可以接受(不采取任何措施)、减轻(减少影响或可能性)、消除(修复)或转移(例如购买某种保险)。

    至于缓解措施,您能否限制 api 密钥范围,以便只能在 api 上执行必要的操作?可以设置限速吗?监控、报警?我不熟悉 Books api,但这些可能是缓解控制。

    至于消除风险,您不应该将 api 密钥放在应用程序中。您可以设置自己的服务器,该服务器将保存 api 密钥,并将请求转发给 theBooks api,并使用 thr api 密钥进行扩充。请注意,尽管您仍然需要在您的服务器中进行某种身份验证和访问控制,否则攻击者可以将其用作预言机来执行实际 Books api 中的任何操作,就像他们拥有密钥一样,仅在此如果他们不需要它。这个角色也可以由某种 api 网关来完成,它还可以向 api 查询添加数据。

    消除风险显然更昂贵。防御应该与风险成正比,所以你必须决定是否值得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多