如何在 "git push" 之前删除敏感信息
How to remove sensitive information before "git push"
我的 python 应用程序在源代码上有数据库 keys/api 键。
类似于:
db_key = XXXXXXXXXXXX
api_token = XXXXXXXXXXXX
...
我想在 commiting/pushing 到 git 之前自动删除这个密钥(不是整个文件)。
另外,我想从我以前的提交中删除它(已经推送到 github)。
有什么解决办法吗?
这里最好的解决方案是将您的密钥放在一个单独的文件中,然后您需要做的就是创建一个 .gitignore 并将该文件放在那里。现在您可以通过阅读此文件获得密钥。
如果您不想将它作为一个单独的文件使用,那么您将需要每次手动删除它或编写一个脚本来执行它(开销并且会很痛苦,具体取决于文件)。
出于安全原因,您应该更改这两个令牌,因为很容易从您的 git 历史记录中获取它们,更改它们会减少一个问题,即修复 git 历史记录你的代币。
在源代码中存储 credentials/sensitive 信息是一种不好的做法。可以通过将它们存储在外部位置来避免这种情况。根据 requirements/security 级别,外部位置可能是:
- 环境变量
- 配置文件未存储在版本控制中
- 数据库
- 像 Hashicorp 的 Vault 这样的专用系统
关于问题的另一部分 – 删除已推送的凭据。首先禁用泄露的凭据(有机器人在寻找它们,来自 Github 和恶意用户)。
禁用凭据后,您需要重写历史记录。这可以用 git rebase
来完成。请注意,重写 public 历史被认为是一种不好的做法,应该避免。我宁愿禁用凭据并添加添加答案第一部分中描述的修改的提交。
使用 pre-commit 钩子可以自动进行更改,但这不是最好的主意。更改后 git status
将始终向您显示工作区与索引不同。
其他选择是使用过滤器,但对我来说这听起来像是过度设计。有了这个,您将解决问题,但不是根本原因(在源代码中以纯文本形式存储凭据)。
我的 python 应用程序在源代码上有数据库 keys/api 键。 类似于:
db_key = XXXXXXXXXXXX
api_token = XXXXXXXXXXXX
...
我想在 commiting/pushing 到 git 之前自动删除这个密钥(不是整个文件)。 另外,我想从我以前的提交中删除它(已经推送到 github)。 有什么解决办法吗?
这里最好的解决方案是将您的密钥放在一个单独的文件中,然后您需要做的就是创建一个 .gitignore 并将该文件放在那里。现在您可以通过阅读此文件获得密钥。
如果您不想将它作为一个单独的文件使用,那么您将需要每次手动删除它或编写一个脚本来执行它(开销并且会很痛苦,具体取决于文件)。
出于安全原因,您应该更改这两个令牌,因为很容易从您的 git 历史记录中获取它们,更改它们会减少一个问题,即修复 git 历史记录你的代币。
在源代码中存储 credentials/sensitive 信息是一种不好的做法。可以通过将它们存储在外部位置来避免这种情况。根据 requirements/security 级别,外部位置可能是:
- 环境变量
- 配置文件未存储在版本控制中
- 数据库
- 像 Hashicorp 的 Vault 这样的专用系统
关于问题的另一部分 – 删除已推送的凭据。首先禁用泄露的凭据(有机器人在寻找它们,来自 Github 和恶意用户)。
禁用凭据后,您需要重写历史记录。这可以用 git rebase
来完成。请注意,重写 public 历史被认为是一种不好的做法,应该避免。我宁愿禁用凭据并添加添加答案第一部分中描述的修改的提交。
使用 pre-commit 钩子可以自动进行更改,但这不是最好的主意。更改后 git status
将始终向您显示工作区与索引不同。
其他选择是使用过滤器,但对我来说这听起来像是过度设计。有了这个,您将解决问题,但不是根本原因(在源代码中以纯文本形式存储凭据)。