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

在这个脚本中定义了三个敏感词: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.

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

相关推荐
鬼手点金9 小时前
Agent 的学习机制:后训练、上下文学习与外部化学习
java·人工智能·git·学习·自动化·nanogpt
金融小师妹14 小时前
多因子时间序列分析:美元与美债收益率变化对黄金价格+1.6%的影响
c语言·人工智能·git·决策树·pyqt
AOI小白新手上路15 小时前
autodl无卡模式下载NTURain 训练集实录:基于 Git 部分克隆与稀疏检出的数据拉取
大数据·git·elasticsearch
天府云创15 小时前
Anthropic重做Git:Scion——Agent时代的版本管理系统
git·svn·版本控制·软件设计·迭代升级·scion
wflynn18 小时前
GitHub 今日推荐|open_scion:为AI代理设计的并发版本控制
git·开源·go·github·agent·coding-agents
初願致夕霞18 小时前
Git 指南
大数据·git·elasticsearch
爱喝热水的呀哈喽21 小时前
cxmt research
git
爱喝热水的呀哈喽21 小时前
概论research
git
鶴哥只手遮天1 天前
Gitea源码深度剖析-第6章 Git 底层封装与仓库存储
git·开源
鶴哥只手遮天1 天前
Gitea源码深度剖析-第2章 启动流程与配置体系
git·开源