欢迎关注公众号:冬瓜白
在日常开发中,我们可能会不小心将敏感信息提交到 Git。为了防止这种情况,可以利用 Git Hooks 编写一个简单的脚本,当发现提交中包含敏感词时,给出提示。
以下是一个基于 pre-commit
钩子的示例脚本:
bash
#!/bin/bash
# pre-commit.sh
FILES_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
do
for WORD in "${FORBIDDEN_WORDS[@]}"
do
if grep -q $WORD $FILE
then
ERRORS="${ERRORS}ERROR: Found '$WORD' references in $FILE. Please check them.\n"
fi
done
done
if [ -n "$ERRORS" ]; then
echo -e $ERRORS
exit 1
fi
exit 0
在这个脚本中定义了三个敏感词:PASSWORD
,SECRET
,TOKEN
。你可以根据需要添加更多的敏感词。
将这个脚本保存在 .git/hooks/pre-commit
:
同时设置脚本可执行:
bash
➜ z-sharding git:(master) chmod +x .git/hooks/pre-commit
这时候当尝试提交包含敏感词的代码时,Git 会给出提示,并精确指出具体的文件,这里我修改了一段包含敏感词的代码:
java
private static final String SECRET = "";
Git 提交会弹出提示,并且精确到具体的文件:
bash
➜ 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.
通过这种方式,可以有效地防止敏感信息的泄露。