【发布时间】:2019-03-08 02:39:59
【问题描述】:
我目前正在开发一个使用 API 密钥和访问令牌通过 TLS 访问数据的 Android 应用程序。
我正在考虑通过 TLS 从诸如 Firebase 之类的东西上发送它,而不是以纯文本形式在应用程序本地存储秘密。我会将其加密发送,并使用一种相当模糊的解密方法。然后 API 机密将用于向 API 发出请求。
是否应考虑保护密钥?我担心恶意实体可能会反编译应用程序并插入他们自己的代码来找出我们隐藏 API 密钥的方法。
我不确定现在有人怎么能找到钥匙。我假设他们会反编译代码并在解密后重定向 API 机密。
最终,无论如何,我知道它可能会被黑客入侵,并且有人可能会发现 API 的秘密。然后,我如何检测到有人拥有 API 机密?除非他们拥有访问令牌,否则他们不能伤害其他用户,这是另一回事,但有没有众所周知的检测攻击的方法?恶意实体可能产生的唯一影响是向伪装成我们的 API 服务器发送许多请求,这会增加我们的计费,但这仍然应该受到保护。我可以轮换我的秘密,但如果他们已经有了找到它的方法,那么这对我来说没什么用。
总结一下: 什么被认为是最佳实践? API 机密是否应该保留在我们从 Firebase Functions 发出请求的服务器中?如何检测攻击,或者这取决于 API 到 API?如果检测到攻击,我是否必须强制用户更新到新版本才能发出请求并在新版本中以新方式隐藏数据?
我对此进行了很多思考,但我仍然有一些问题我自己或网上都没有找到答案。谢谢。
【问题讨论】:
-
简短回答:除非您每次都强制用户显式登录,否则您无法保证 API 密钥的安全。但即便如此,用户仍然拥有会话密钥。
标签: android firebase security token secret-key