【问题标题】:Is it OK to use Firebase RemoteConfig to store API Keys?可以使用 Firebase RemoteConfig 存储 API 密钥吗?
【发布时间】:2016-12-31 18:51:48
【问题描述】:

注意:为了澄清,这不是 Firebase API 密钥,这可能更像是一个令牌......客户端应用程序拥有的东西,服务器端点验证。

我们正在努力更好地保护 API 密钥(想想用于验证客户端到端点的令牌)。这一切都在我们的内部网络上,但我们仍然希望确保只有我们的移动客户端可以调用端点。

我在想我们可以将 API 密钥放在 Firebase 远程配置参数中(应用内置的默认值无效)。但是,远程配置的 Firebase 文档说:

不要将机密数据存储在远程配置参数键或参数值中。可以为您的项目解码存储在远程配置设置中的任何参数键或值。

我不确定这是否只是指与应用程序捆绑在一起的默认值,或者它是否也用于远程加载的值。获得密钥后,我们可以对其进行加密并通过我们的 MDM 提供商将其存储在设备上。

另外,远程配置数据到应用程序的传输是加密还是明文?

感谢任何人都可以提供有关远程配置的更多信息。

【问题讨论】:

  • 在 Firebase 的上下文中,API 密钥通常不能识别特定的客户端,但它是一个简单的值,允许连接的客户端绑定到其后端项目。将这些嵌入到您的应用中明确不是安全漏洞。听起来您的 API 密钥不同,但在这种情况下,您可能需要考虑为它们使用不同的名称。 :-)

标签: firebase firebase-remote-config


【解决方案1】:

@Frank van Puffelen 可以确认这一点,但据我了解,Firebase 远程配置使用 HTTPS 而不是 HTTP 请求,这使得嗅探应用程序和 Firebase 之间共享的信息变得更加困难远程配置与反编译 APK 并读取 using string constants generated by Gradle build configurations 时生成的字符串。例如,当使用网络代理嗅探器(例如 Charles Proxy)调试应用程序时,您无法查看端点详细信息,除非应用程序在调试模式下编译,因为 HTTPs 请求和更新的安全措施最新的 API 版本。

What makes "https" sites more secure than "http"?

HTTP 协议在传输数据时不使用数据加密,因此您的个人信息可能会被第三方截获甚至操纵。为了捕获网络信息(密码、信用卡号、用户 ID 等),黑客使用一种称为“嗅探”的方法。如果网络数据包未加密,则可以借助黑客应用程序读取和窃取其中的数据。

另外,HTTPS 可以在您的计算机和服务器之间传输期间保护任何类型的数据,包括密码、短信和信用卡详细信息。 HTTPS 通过使用 TSL 协议(通常称为 SSL)保护您的数据机密,该协议是一种安全证书,可提供三层保护,例如加密、数据完整性和身份验证。SSL 证书使用所谓的非对称公钥加密技术,或公钥基础设施 (PKI) 系统。 PKI 系统使用两种不同的密钥来加密通信:公钥和私钥。任何用公钥加密的东西都只能用对应的私钥解密,反之亦然。另外,HTTPS可以保护你免受黑客攻击,如中间人攻击、DNS重新绑定和重放攻击。

进一步的安全措施

  1. Dexguard 根据其登录页面提供字符串加密。我已经向他们发送了一条消息,正在等待独立开发者的成本。
  2. 使用public/private API key exchange 可能是额外的安全层。但是,我需要进一步研究实现以更好地理解此选项。

【讨论】:

    【解决方案2】:

    这取决于您希望保留 API 密钥的安全性。 API 密钥允许某人做什么?如果只是为了向其他服务(例如 YouTube 数据 API)识别您的应用,那么可能发生的最糟糕的情况是恶意用户用尽了您对该资源的配额。另一方面,如果密钥允许持有者在没有进一步身份验证和授权的情况下对重要数据进行一些不可逆的更改,那么您永远不希望它以任何形式存储在他们的设备上。

    您对 Firebase 文档的引用回答了您的问题。一般来说,您不应该在您的应用程序中存储私钥。查看this question 的答案以获得详尽的解释。

    使用 Firebase 的远程配置几乎不比在应用程序包中传送密钥更安全。无论哪种方式,数据最终都会出现在用户的硬件上。理论上,恶意的人可以访问它,无论我们认为这样做有多么困难。

    另外,我不能肯定地说(你应该能够轻松地测试这个),但我非常怀疑远程配置值是以纯文本形式发送的。默认情况下,Google 会通过 https 完成所有操作。

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 2019-02-20
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 2010-10-13
      • 2020-07-04
      • 1970-01-01
      • 2014-11-16
      相关资源
      最近更新 更多