核心是配置Gitleaks预提交钩子:先pip install pre-commit,再创建含gitleaks仓库的.pre-commit-config.yaml,执行pre-commit install --hook-type pre-commit启用;通过.gitleaks.toml白名单或exclude规则屏蔽误报;测试时插入$api_key = "sk_test_abc123xyz789"并commit,失败即生效。

在PHP框架项目中执行Git代码仓库安全检查,核心目标是拦截敏感信息泄露、配置硬编码、危险函数残留等风险,必须在代码提交前完成本地校验,而非依赖上线后补救。
安装并初始化pre-commit钩子
第一步:在项目根目录执行pip install pre-commit,确保Python环境已就绪且pip版本≥23.0。
第二步:创建.pre-commit-config.yaml文件,内容必须包含gitleaks扫描器,否则无法检测密钥类风险:
repos:
- repo: https://github.com/gitleaks/gitleaks.git
rev: v8.18.1
hooks:
- id: gitleaks
第三步:运行pre-commit install --hook-type pre-commit,该命令将钩子注入.git/hooks/目录。若跳过此步,后续所有git commit均不会触发扫描。
配置gitleaks规则屏蔽误报项
方法一:编辑.gitleaks.toml文件,在[[rules]]区块中添加allow = ["test-key", "dev-secret"]白名单,避免测试密钥被误判。
方法二:对特定文件类型禁用扫描,在.pre-commit-config.yaml的gitleaks hook下追加exclude: '^(config/.+|tests/.+|\.env\.example)$',防止配置模板或测试用例干扰结果。
【注意:.env.example必须排除,否则gitleaks会将其内示例密钥标记为泄露】
验证钩子是否生效
第一步:向任意PHP文件中插入测试密钥字符串——$api_key = "sk_test_abc123xyz789";
第二步:执行git add .暂存该变更。
第三步:运行git commit -m "test leak detection"。
若终端立即输出gitleaks.............Failed并中断提交,则钩子已正确工作;若无任何提示直接完成提交,说明pre-commit未加载或gitleaks未正确绑定。
强制扫描全部历史提交(仅首次部署时执行)
① 执行gitleaks detect --repo-path=. --report=leaks.json --verbose,生成全量扫描报告。
② 检查leaks.json中secrets字段是否为空数组,非空则表示存在已提交的硬编码密钥。
③ 若发现历史泄露,必须使用git filter-repo --force --mailmap /dev/null --strip-blobs-bigger-than 10M清理敏感内容,否则审计即失效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











