使用 Git Hooks 防止敏感信息泄露

欢迎关注公众号:冬瓜白

在日常开发中,我们可能会不小心将敏感信息提交到 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

在这个脚本中定义了三个敏感词:PASSWORDSECRETTOKEN。你可以根据需要添加更多的敏感词。

将这个脚本保存在 .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.

通过这种方式,可以有效地防止敏感信息的泄露。

相关推荐
jingshaoqi_ccc6 小时前
GitKraken最后一个免费版本和下载地址
git·github·gitkraken·版本管理工具
乌云暮年6 小时前
Git简单命令
git·gitee·github·batch命令
用户1259265423209 小时前
使用 Docker 搭建 Gitea 并实现 Git HTTP 自动登录
git
一只毛驴12 小时前
谈谈对git stash的理解?
git
长风破浪会有时呀16 小时前
Git 学习笔记
笔记·git·学习
中微子1 天前
Git Rebase 详解:概念、原理与实战示例
git
荔枝吻1 天前
【保姆级喂饭教程】Windows下安装Git Flow
windows·git·git flow
云和数据.ChenGuang1 天前
git中的指令解释
git
小Lu的开源日常1 天前
在 macOS 上设置 SSH 和 Git
git·macos·ssh
eleven_h1 天前
ERROR: Permission to Splode/pomotroid.git deni
git