使用 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.

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

相关推荐
无心水11 小时前
【Hermes:安全、权限与生产环境】39、智能体也会犯错?Hermes 纠错、回滚与遗忘机制全指南 —— 让 AI 的错误像 Git 一样可逆可控
人工智能·git·安全·mcp协议·openclaw·hermes·honcho
南境十里·墨染春水15 小时前
linux学习进展 git详解
linux·git·学习
zhangfeng113316 小时前
CodeBuddy ai对话框上面的git docs terminal Rulds 干嘛用的,以thinkphp fastadmin 为例,插件市场
人工智能·git·编程
OYangxf17 小时前
Git Conflict Resolution
大数据·git·elasticsearch
高斯林.神犇17 小时前
Git全套流程
git
次元工程师!19 小时前
LangFlow开发(一)—安装和部署
git·python·大模型·langflow
怣疯knight19 小时前
【无标题】
git
Jim-zf20 小时前
git 锁文件
git
lcx_defender20 小时前
Git常见操作与指令
git
一只积极向上的小咸鱼1 天前
嵌套 Git 仓库 / gitlink / submodule 问题总结
大数据·git·elasticsearch