歡迎關注公眾號:冬瓜白
在日常開發中,我們可能會不小心將敏感信息提交到 Git。為了防止這種情況,可以利用 Git Hooks 編寫一個簡單的腳本,當發現提交中包含敏感詞時,給出提示。
以下是一個基于 pre-commit
鉤子的示例腳本:
#!/bin/bash
# pre-commit.shFILES_PATTERN='\.(java|js|ts)(\..+)?$'
FORBIDDEN_WORDS=("PASSWORD" "SECRET" "TOKEN") # 添加更多的敏感詞
FILES=$(git diff --cached --name-only --diff-filter=ACMR HEAD | grep -E $FILES_PATTERN)ERRORS=""for FILE in $FILES
dofor WORD in "${FORBIDDEN_WORDS[@]}"doif grep -q $WORD $FILEthenERRORS="${ERRORS}ERROR: Found '$WORD' references in $FILE. Please check them.\n"fidone
doneif [ -n "$ERRORS" ]; thenecho -e $ERRORSexit 1
fiexit 0
在這個腳本中定義了三個敏感詞:PASSWORD
,SECRET
,TOKEN
。你可以根據需要添加更多的敏感詞。
將這個腳本保存在 .git/hooks/pre-commit
:
同時設置腳本可執行:
? z-sharding git:(master) chmod +x .git/hooks/pre-commit
這時候當嘗試提交包含敏感詞的代碼時,Git 會給出提示,并精確指出具體的文件,這里我修改了一段包含敏感詞的代碼:
private static final String SECRET = "";
Git 提交會彈出提示,并且精確到具體的文件:
? z-sharding git:(master) ? git add .
? z-sharding git:(master) ? git commit -m 'feat:test2'
ERROR: Found 'SECRET' references in src/main/java/com/mi/maf/sharding/core/ConnectionWrapper.java. Please check them.
通過這種方式,可以有效地防止敏感信息的泄露。