或者在GitLab或其他公共源代碼管理平台上。現在該怎麼辦?

我偶然發現了一個網站,該網站不斷掃描GitHub、GitLab和BitBucket,這是三個最常用的公開源代碼主機地方,並展示了提交的SSH密碼、常用服務的API金鑰、數據庫等等。

密碼圖片

這讓人很害怕,對吧?

如果這從未發生過,請舉手。我們都會犯錯。當這種情況發生時,唯一的辦法就是迅速使公開的密碼或API金鑰失效。

對於新手來說,在Git中,你不能只是回滾提交,因為它仍然會保留在存儲庫的歷史記錄中。

你的聲譽、項目的聲譽、用戶的安全都面臨風險。

在解決緊急情況後,問題是:如何避免這個問題?答案是什麼?有什麼解決方案可以幫助我們避免將密鑰提交到公開可用的Git存儲庫中?

答案是:工作流程和工具。

首先,永遠不要將API金鑰或密碼添加到源代碼中。它們可能悄悄地藏在那裡。相反,始終將它們添加到項目根文件夾中的.env文件中,並將.env添加到.gitignore文件中,這樣就不會被提交。使用類似dotenv的工具來訪問它們。

使用git-secrets工具,它將幫助你避免將密鑰提交到Git中。

在macOS上,你可以使用Homebrew進行安裝:

brew install git-secrets

然後進入要在其上啟用它的存儲庫中,運行:

git secrets --install

以安裝Git pre-commit hook。這將確保在Git提交到存儲庫之前運行該工具。

如果你使用Amazon Web Services (AWS),運行以下命令以添加該服務的識別模式集:

git secrets --register-aws

你可以立即使用以下命令掃描問題:

git secrets --scan

理想情況下,該工具不應該打印任何內容。但如果有問題,它會提供詳細的信息。