为flutter应用程序存储/加载api密钥的最佳方法是什么?

时间:2019-07-01 18:20:23

标签: android security flutter mobile-application api-key

如标题中所述,我正在尝试安全地存储api密钥并加载它以在应用需要时使用。根据到目前为止我从研究中获得的信息(如果有任何错误或不足之处,请纠正我或加起来),我可以尝试的方法是:

  1. 让包含密钥的文件不包含在包中;例如将密钥存储在环境变量或服务器端代码中(然后调用http请求以获取数据)。

  2. 混淆或/和加密密钥,然后再存储。

  3. 使用内置的密钥存储系统,例如flutter_secure_storage。

  4. 如果将密钥存储在本地并将应用程序推送到github,请在.gitignore中添加文件名,以防止提交文件。

结果,我的计划是这样的:

1)将密钥存储在本地计算机的环境变量中-> 2)在我的服务器端代码中创建一个将密钥发送给客户端的api-> 3)在客户端,使用flutter_secure_storage库(RSA密钥对加密)。

我想将密钥存储在服务器端的原因是因为我读过一篇文章,只有将密钥存储在应用程序中,反编译我的应用程序才能轻松获取任何密钥。

但是,我仍然不清楚我的理解和方法是否正确。任何建议将被认真考虑。谢谢。

1 个答案:

答案 0 :(得分:0)

好的,我的答案:

记住,我们正使逆向工程变得极为困难,但并非不可能!

TSL 1.3改变了球类游戏,因为远程配置文档中的火力警告不再适用,您实际上可以将api密钥存储在那里,并且很难通过应用程序代理通过https嗅探来获取它。

您仍然需要混淆dart代码,并且可能仅在应用程序首次启动时访问api密钥,然后将其存储在设备上的安全存储中。

是的,永远不要将您需要的firebase google services json文件存储在云中的任何git仓库中。