注意:澄清一下,这不是 Firebase API 密钥,这可能更像是一个令牌……客户端应用程序拥有并由服务器端点验证的东西。
我们正在努力更好地保护 API 密钥(想想用于验证端点客户端的令牌)。这一切都将在我们的内部网络上,但我们仍然希望确保只有我们的移动客户端可以呼叫端点。
我想我们可以将 API 密钥放入 Firebase 远程配置参数中(应用程序中内置了无效的默认值)。但是,Firebase 远程配置文档说:
不要将机密数据存储在远程配置参数键或参数值中。可以解码项目远程配置设置中存储的任何参数键或值。
我不确定这是否只是指与应用程序捆绑在一起的默认值,或者是否也指远程加载的值。获得密钥后,我们可以对其进行加密并通过我们的 MDM 提供商将其存储在设备上。
另外,远程配置数据到应用程序的传输是加密的还是明文的?
感谢任何人都可以提供有关远程配置的更多信息。
这取决于您希望保持 API 密钥的安全程度。 API 密钥允许某人做什么?如果只是为了向其他服务(例如 YouTube 数据 API)识别您的应用,那么最糟糕的情况就是恶意用户用完您对该资源的配额。另一方面,如果密钥允许持有者在没有进一步身份验证和授权的情况下对重要数据进行一些不可逆转的更改,那么您永远不希望它以任何形式存储在他们的设备上。
您引用的 Firebase 文档回答了您的问题。一般来说,您不应该在应用程序中存储私钥。查看以下问题的答案这个问题 https://stackoverflow.com/questions/14778429/secure-keys-in-ios-app-scenario-is-it-safe以获得详尽的解释。
使用 Firebase 的远程配置并不比在应用程序包中传送密钥更安全。无论哪种方式,数据最终都会存储在用户的硬件上。理论上,恶意的人可以访问它,无论我们认为这有多困难。
另外,我不能肯定地说(您应该能够轻松测试这一点),但我非常怀疑远程配置值是否以纯文本形式发送。默认情况下,Google 会通过 https 执行所有操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)