【问题标题】:Sharing github project without sharing API-Key共享 github 项目而不共享 API-Key
【发布时间】:2019-02-19 19:58:44
【问题描述】:

我想在 GitHub 上与其他人分享我的项目,以便他们可以查看我的代码。

但是,在项目文件中有我的 API-Key,每个人都可以看到它。

  • 会有问题吗?
  • 有什么方法可以隐藏 API-Key?
  • 关于共享项目我还应该知道什么?

感谢任何提示或建议。

【问题讨论】:

    标签: github api-key


    【解决方案1】:

    但是,在项目文件中有我的 API-Key,每个人都可以看到它。

    是的,每个人都可以看到它们,并且它们永远不应该出现在您的代码中。

    会有问题吗?

    • 会有问题吗?

    在代码中硬编码秘密的问题在于,它们可能会在您在线托管的任何存储库的 git 提交中意外暴露。黑客在 Github API 端点 /events 中监听,并​​会立即扫描任何提交的秘密,并在几分钟内,他们可能会使用你的秘密代表你访问任何第三方服务,然后你可能会有一个像著名的我的 2375 美元的 Amazon EC2 错误一样讲述故事。

    所有这些以及更多内容可以在我最近写的一篇文章中找到,可以在here找到:

    以下是一些暴露 API 密钥、令牌、密码、云凭证和其他机密的地方的示例:

    • 在提交到 github、gitlab 和其他在线代码存储库的代码中。
    • 云上的 CI 管道和自动化工具。
    • 将粘贴代码复制到 Stackoverflow、论坛、问题跟踪器等位置时。

    有什么方法可以隐藏 API-key?

    • 有没有办法隐藏 API-Key?

    要从源代码中隐藏它,您只需要使用环境变量并且通常编程语言支持它,最常见的方法是将它们放在项目根目录下的.env 文件中。请记住,必须将此 .env 文件添加到 .gitignore 文件中,以防止您的机密泄露到代码存储库中。

    通过使用保管库为您的代码提供机密信息,可以在生产部署中实现进一步改进,例如使用 Github 上的 Hashicorp Vault 项目:

    Vault 是一种用于安全访问机密的工具。机密是您想要严格控制访问的任何内容,例如 API 密钥、密码、证书等。 Vault 为任何秘密提供统一的接口,同时提供严格的访问控制并记录详细的审计日志。

    关于共享项目我还应该知道什么?

    • 关于共享项目我还应该知道什么?

    通过提供security@yourdomain.com 形式的电子邮件或将您的 Twitter 处理程序放在自述文件中并要求他们通过私人消息与您联系,始终让人们轻松联系您以报告您的项目中的安全问题,但请记住向任何 Twitter 用户开放私人消息,否则他们将无法向您发送消息。

    您还应该在自述文件中提到,不应使用 Github 问题来报告安全漏洞,因为这会使它们对所有人可见。

    【讨论】:

    • 非常感谢您的精彩解释。据我了解,最初使用 Google API 的 200 美元是免费的。我还需要注册账单吗? Google 现在是否需要信用卡才能访问 Google 地图?
    • 现在好像是 300 美元,他们的任何服务都可以终身免费使用,您可以在这里查看 cloud.google.com/free。需要启用计费才能对服务进行计费,因此我认为信用卡是必要的,但仅在您用完试用信用时才收费。请记住为您的服务成本启用警报,否则您可能会忘记启用的任何内容,并且当您意识到您可能需要支付巨额账单时。
    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2021-12-28
    • 2015-08-13
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    相关资源
    最近更新 更多