在不共享API密钥的情况下共享github项目

时间:2019-02-19 19:58:45

标签: github api-key

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

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

  • 会不会有问题?
  • 是否可以隐藏API密钥?
  • 关于共享项目,我还应该了解什么?

赞赏任何提示或建议。

1 个答案:

答案 0 :(得分:1)

  

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

是的,每个人都可以看到它们,并且永远不要将它们放在您的代码中。

会不会有问题?

  
      
  • 会不会有问题?
  •   

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

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

  

以下是一些发现API密钥,令牌,密码,云凭据和其他机密的地方的例子:

     
      
  • 在致力于github,gitlab和其他在线代码存储库的代码中。
  •   
  • 在云上的CI管道和自动化工具上。
  •   
  • 将粘贴代码复制到Stackoverflow,论坛,问题跟踪器等地方时
  •   

是否可以隐藏API密钥?

  
      
  • 是否可以隐藏API密钥?
  •   

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

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

  

保险柜是用于安全访问机密的工具。秘密是您想要严格控制访问权限的所有内容,例如API密钥,密码,证书等。保险柜为所有机密提供了统一的界面,同时提供了严格的访问控制并记录了详细的审核日志。

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

  
      
  • 关于共享项目,我还应该了解什么?
  •   

通过以security@yourdomain.com的形式提供电子邮件或将Twitter Handler放在README中,并要求他们通过以下方式与您联系,总是可以使人们轻松地与您联系以报告项目中的安全问题。私人消息,但请记住不要对任何Twitter用户开放私人消息,否则他们将无法向您发送消息。

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