sellisrev/git-security-scan
GitHub: sellisrev/git-security-scan
零依赖的 Git pre-commit 安全扫描脚本,用纯 Bash + grep 检测敏感信息和常见安全漏洞。
Stars: 0 | Forks: 0
# git-security-scan
零依赖的 secret 检测和 git 仓库安全扫描器。纯 bash + grep 实现 —— 无需外部工具。
## 功能说明
在每次 `git commit` 时自动运行(通过 pre-commit hook),也可选择在 `npm pack`/`npm publish` 之前运行。四阶段扫描:
1. **危险文件名** — 阻止 `.env`、`.claude.json`、`id_rsa`、`*.pem`、`*.key`、`*.pfx`、`*.tfvars` 等。
2. **Secret 模式** — 25+ 正则表达式模式,涵盖 API key(AWS、GitHub、Stripe、OpenAI、Anthropic、Slack 等)、私钥头部、数据库连接字符串、密码/token 赋值
3. **安全检查** — `eval()`、`innerHTML`、`document.write`、SQL 注入模式、shell 注入、禁用 TLS、弱加密、不安全 HTTP、禁用 CORS、debug 模式
4. **高熵字符串** — 对代码中可疑的长 hex/base64 字符串发出警告
Secrets 会**阻止**提交。安全问题会产生**警告**,但允许提交。
## 快速安装
```
git clone https://github.com/sellisrev/git-security-scan.git
cd your-project
bash /path/to/git-security-scan/install.sh .
```
或手动安装:
```
# 复制 scanner
mkdir -p scripts
cp /path/to/git-security-scan/scripts/scan-secrets.sh scripts/
chmod +x scripts/scan-secrets.sh
# 安装 pre-commit hook
cp /path/to/git-security-scan/hooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
```
## 使用方法
```
# 扫描暂存文件 (pre-commit hook 的作用)
bash scripts/scan-secrets.sh --staged
# 扫描所有已跟踪文件 (适用于 CI 或 pre-pack)
bash scripts/scan-secrets.sh --all
# 扫描特定文件
bash scripts/scan-secrets.sh --files src/config.js lib/auth.ts
```
## npm 集成
添加到你的 `package.json`:
```
{
"scripts": {
"prepack": "bash scripts/scan-secrets.sh --all",
"prepublishOnly": "bash scripts/scan-secrets.sh --all",
"security:scan": "bash scripts/scan-secrets.sh --all"
}
}
```
## .gitignore 模板
包含一个全面的 `.gitignore` 模板,位于 `gitignore.template`。将其复制到你的项目:
```
cp /path/to/git-security-scan/gitignore.template .gitignore
```
## 检测的 secret 类型
| 类别 | 示例 |
|----------|---------|
| 云服务商 | AWS `AKIA...`、Google `AIza...`、Azure `AccountKey=...` |
| AI/ML | Anthropic `sk-ant-...`、OpenAI `sk-...`、Gamma `sk-gamma-...` |
| 代码托管 | GitHub `ghp_`、`gho_`、`ghu_`、`github_pat_`、GitLab `glpat-` |
| 支付 | Stripe `sk_live_`、`pk_live_` |
| 通讯 | Slack `xox...`、Discord webhooks、Twilio `SK...`、SendGrid `SG.` |
| 包仓库 | npm `npm_`、PyPI `pypi-` |
| 私钥 | RSA、DSA、EC、OpenSSH、PGP key 头部 |
| 连接字符串 | `mongodb://`、`postgres://`、`mysql://`、`redis://`、JDBC |
| 通用 | 密码/secret/token 赋值、Authorization 头部 |
## 环境要求
- Bash 4+(Windows 上的 Git Bash 亦可)
- grep 支持 `-E`(扩展正则表达式)
- git
## 许可证
MIT
标签:API密钥保护, CI/CD安全, DevSecOps, Git安全扫描, Git钩子, Llama, LLM应用, LNA, NPM脚本, Pre-commit Hook, Shell注入, SQL注入检测, 上游代理, 云安全监控, 安全助手, 应用安全, 开发安全, 暗色界面, 源码卫士, 熵值检测, 知识库安全, 秘密扫描, 纯Bash实现, 网络安全, 隐私保护, 零依赖, 静态分析