【发布时间】:2019-02-19 19:58:44
【问题描述】:
我想在 GitHub 上与其他人分享我的项目,以便他们可以查看我的代码。
但是,在项目文件中有我的 API-Key,每个人都可以看到它。
- 会有问题吗?
- 有什么方法可以隐藏 API-Key?
- 关于共享项目我还应该知道什么?
感谢任何提示或建议。
【问题讨论】:
我想在 GitHub 上与其他人分享我的项目,以便他们可以查看我的代码。
但是,在项目文件中有我的 API-Key,每个人都可以看到它。
感谢任何提示或建议。
【问题讨论】:
但是,在项目文件中有我的 API-Key,每个人都可以看到它。
是的,每个人都可以看到它们,并且它们永远不应该出现在您的代码中。
- 会有问题吗?
在代码中硬编码秘密的问题在于,它们可能会在您在线托管的任何存储库的 git 提交中意外暴露。黑客在 Github API 端点 /events 中监听,并会立即扫描任何提交的秘密,并在几分钟内,他们可能会使用你的秘密代表你访问任何第三方服务,然后你可能会有一个像著名的我的 2375 美元的 Amazon EC2 错误一样讲述故事。
所有这些以及更多内容可以在我最近写的一篇文章中找到,可以在here找到:
以下是一些暴露 API 密钥、令牌、密码、云凭证和其他机密的地方的示例:
- 在提交到 github、gitlab 和其他在线代码存储库的代码中。
- 云上的 CI 管道和自动化工具。
- 将粘贴代码复制到 Stackoverflow、论坛、问题跟踪器等位置时。
- 有没有办法隐藏 API-Key?
要从源代码中隐藏它,您只需要使用环境变量并且通常编程语言支持它,最常见的方法是将它们放在项目根目录下的.env 文件中。请记住,必须将此 .env 文件添加到 .gitignore 文件中,以防止您的机密泄露到代码存储库中。
通过使用保管库为您的代码提供机密信息,可以在生产部署中实现进一步改进,例如使用 Github 上的 Hashicorp Vault 项目:
Vault 是一种用于安全访问机密的工具。机密是您想要严格控制访问的任何内容,例如 API 密钥、密码、证书等。 Vault 为任何秘密提供统一的接口,同时提供严格的访问控制并记录详细的审计日志。
- 关于共享项目我还应该知道什么?
通过提供security@yourdomain.com 形式的电子邮件或将您的 Twitter 处理程序放在自述文件中并要求他们通过私人消息与您联系,始终让人们轻松联系您以报告您的项目中的安全问题,但请记住向任何 Twitter 用户开放私人消息,否则他们将无法向您发送消息。
您还应该在自述文件中提到,不应使用 Github 问题来报告安全漏洞,因为这会使它们对所有人可见。
【讨论】: