【发布时间】:2013-05-25 22:39:09
【问题描述】:
我正在为 iOS 开发,我需要使用 API 密钥和秘密向某些 API 发出请求。但是,我不希望它在我的源代码中公开,并且在我推送到我的存储库时泄露机密。
这种情况的最佳做法是什么?将它写在一个单独的文件中,我将包含在 .gitignore 中?
谢谢
【问题讨论】:
我正在为 iOS 开发,我需要使用 API 密钥和秘密向某些 API 发出请求。但是,我不希望它在我的源代码中公开,并且在我推送到我的存储库时泄露机密。
这种情况的最佳做法是什么?将它写在一个单独的文件中,我将包含在 .gitignore 中?
谢谢
【问题讨论】:
将它写在一个单独的文件中,我将包含在 .gitignore 中?
不,永远不要写它。
这意味着:
在您的存储库中存储一个脚本,该脚本能够从外部来源(从 git 存储库外部)寻找该秘密并将其加载到 内存中。
这类似于git credential-helper process,并且该脚本将启动一个侦听localhost:port 的进程,以便仅在当前会话中需要时为您提供该“秘密”。
会话完成后,就没有任何痕迹了。
这是管理机密数据的最佳做法。
如果您在 .gitattributes 文件中将其声明为内容过滤器,则可以在 git checkout 上自动触发该脚本:
【讨论】:
这是一个非常古老的问题,但如果有人在 google 中看到这个问题,我建议您尝试使用 CloudKit 来存储任何应用程序机密(API 密钥、Oauth 机密)。只有您的 app 可以访问您的 app 容器,Apple 和您的 app 之间的通信是安全的。 您可以查看here。
【讨论】: