在GitHub上發布了我的密碼 / API金鑰
或者在GitLab或其他公共源代碼管理平台上。現在該怎麼辦?
我偶然發現了一個網站,該網站不斷掃描GitHub、GitLab和BitBucket,這是三個最常用的公開源代碼主機地方,並展示了提交的SSH密碼、常用服務的API金鑰、數據庫等等。
這讓人很害怕,對吧?
如果這從未發生過,請舉手。我們都會犯錯。當這種情況發生時,唯一的辦法就是迅速使公開的密碼或API金鑰失效。
對於新手來說,在Git中,你不能只是回滾提交,因為它仍然會保留在存儲庫的歷史記錄中。
你的聲譽、項目的聲譽、用戶的安全都面臨風險。
在解決緊急情況後,問題是:如何避免這個問題?答案是什麼?有什麼解決方案可以幫助我們避免將密鑰提交到公開可用的Git存儲庫中?
答案是:工作流程和工具。
首先,永遠不要將API金鑰或密碼添加到源代碼中。它們可能悄悄地藏在那裡。相反,始終將它們添加到項目根文件夾中的.env
文件中,並將.env
添加到.gitignore
文件中,這樣就不會被提交。使用類似dotenv的工具來訪問它們。
使用git-secrets
工具,它將幫助你避免將密鑰提交到Git中。
在macOS上,你可以使用Homebrew進行安裝:
1 | brew install git-secrets |
然後進入要在其上啟用它的存儲庫中,運行:
1 | git secrets --install |
以安裝Git pre-commit hook。這將確保在Git提交到存儲庫之前運行該工具。
如果你使用Amazon Web Services (AWS),運行以下命令以添加該服務的識別模式集:
1 | git secrets --register-aws |
你可以立即使用以下命令掃描問題:
1 | git secrets --scan |
理想情況下,該工具不應該打印任何內容。但如果有問題,它會提供詳細的信息。
tags: [“GitHub”, “GitLab”, “BitBucket”, “API keys”, “ssh passwords”, “source control”, “Git”]