【问题标题】:Is it safe to keep sensitive data in branches that are not pushed?将敏感数据保存在未推送的分支中是否安全?
【发布时间】:2017-10-29 10:30:26
【问题描述】:

假设我在git 工作,我创建了一个名为sensitive 的分支并在sensitive 中提交敏感数据(例如密码、密钥)。我从不在master 中提交敏感数据,也从不将sensitive 合并到master,但我确实将master 拉到sensitive。当我git push origin master 时,是否有将敏感数据块推送到服务器的危险?

【问题讨论】:

  • 如果你从不提交敏感数据,也从不命名分支或标签或任何敏感的东西,那么git push 不会推送敏感数据。但是,作为 git 的开发人员/用户,您有责任确保您永远不会提交敏感数据。请参阅此处的最佳答案以获得具有更多保护措施的更好方法,并且是人们决定处理这种情况的“典型”方式。

标签: git security privacy


【解决方案1】:

您的问题是关于 Git 的,但实际上,您的问题是另一个问题。它有(至少)一种解决方案。

  1. 将敏感数据放入一个名为config 的文件中,并将其名称(和路径)添加到.gitignore
  2. 创建此文件的副本,我们将其命名为config.dist,将敏感数据替换为虚拟数据并将其添加到存储库(不得包含敏感数据)。在文件头说明必须复制为config并自定义。
  3. 让代码从config 加载其配置。对于奖励积分,如果 config 不可用,您可以让它加载 config.dist
  4. 提交并推送。

文件config.dist 用作实际config 文件的模板,该文件从未存储在repo 中。每个开发人员都可以根据需要/想要自定义他们的config 文件。让config/config.dist 包含从一个系统更改到另一个系统或可能在项目生命周期内更改的所有信息(文件路径、数据库连接参数、密码等)


为了回答您的问题,上述解决方案是 100% 安全的(不考虑人为错误)。由于config文件永远不会到达repo,无论Git内部如何工作,敏感数据永远不会被推送到远程repo。

【讨论】:

  • 并且可以实施 git 挂钩(例如预提交)以进一步保护它免受人为错误的影响。
【解决方案2】:

不,没有危险。如果您不考虑将敏感数据共享给所有可以访问您存储库的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 2017-09-15
    • 2021-07-29
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多