开发者在赶进度时容易顺手把 .env 密钥、console.log 调试代码、甚至 node_modules 大文件一起 commit 然后 push。等发现时已经进了 Git 历史,即使用 git reset 也很难完全清除。
目前多数方案要么依赖 CI/CD 阶段才拦截(为时已晚),要么配置复杂、需要团队规范约束。git-safe 把检查前置到本地 commit 阶段,安装一条命令,之后每次提交自动执行,不依赖外部服务。适用于个人开发者、小型团队以及缺乏专职安全人员的中小企业项目,在代码入库前卡住最常见的安全和规范问题。
git-safe 在 git commit 执行前自动扫描暂存区,按严重级别分类拦截:
阻断级 — 密钥检测覆盖 AWS Key、GitHub Token、Slack Token、JWT、私钥文件等十余种模式;敏感文件拦截包括 .env、credentials.json、SSH 私钥、证书存储;文件大小默认上限 5MB,防止 node_modules 等误提交。
警告级 — 调试代码检测支持 Python(print、breakpoint)、JavaScript/TypeScript(console.log、debugger)、Go(fmt.Print)、Rust(dbg!)等主流语言。
提交信息校验 — 拒绝空消息和"fix""update""wip"等模糊描述,对过短或过长消息发出警告。
所有检查项可通过 --no-secrets、--no-debug、--max-size 等参数灵活控制,紧急情况用 git commit --no-verify 跳过。安装只需 git-safe install,卸载同理,零配置侵入。
注册到 .git/hooks/pre-commit,每次 git commit 时 Git 自动触发。Hook 调用 git diff --cached 获取暂存文件列表,通过 git show :filepath 读取每个文件的暂存内容,逐文件跑四个检查模块:checkers.py 用正则匹配密钥模式和调试语句,os.stat 获取文件大小,提交信息通过 commit-msg hook 单独校验。所有模块统一返回 0(放行)或 1(阻断)。纯标准库实现,零外部依赖。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论