secret-scanner
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSecret Scanner Skill
Secret Scanner 技能
Prevent accidental secret exposure in your codebase.
防止代码库中意外泄露密钥。
When I Activate
激活时机
- ✅ Before git commits
- ✅ Files modified/saved
- ✅ User mentions secrets, keys, or credentials
- ✅ .env files changed
- ✅ Configuration files modified
- ✅ Git提交前
- ✅ 文件修改/保存时
- ✅ 用户提及密钥、API密钥或凭据
- ✅ .env文件变更时
- ✅ 配置文件修改时
What I Detect
检测范围
API Keys & Tokens
API密钥与令牌
- AWS access keys (AKIA...)
- Stripe API keys (sk_live_..., pk_live_...)
- GitHub tokens (ghp_...)
- Google API keys
- OAuth tokens
- JWT secrets
- AWS访问密钥(AKIA...)
- Stripe API密钥(sk_live_..., pk_live_...)
- GitHub令牌(ghp_...)
- Google API密钥
- OAuth令牌
- JWT密钥
Database Credentials
数据库凭据
- Database connection strings
- MySQL/PostgreSQL passwords
- MongoDB connection URIs
- Redis passwords
- 数据库连接字符串
- MySQL/PostgreSQL密码
- MongoDB连接URI
- Redis密码
Private Keys
私钥
- SSH private keys
- RSA/DSA keys
- PGP/GPG keys
- SSL certificates
- SSH私钥
- RSA/DSA密钥
- PGP/GPG密钥
- SSL证书
Authentication Secrets
认证密钥
- Password variables
- Auth tokens
- Session secrets
- Encryption keys
- 密码变量
- 认证令牌
- Session密钥
- 加密密钥
Alert Examples
告警示例
API Key Detection
API密钥检测
javascript
// You type:
const apiKey = 'sk_live_1234567890abcdef';
// I immediately alert:
🚨 CRITICAL: Exposed Stripe API key detected!
📍 File: config.js, Line 3
🔧 Fix: Use environment variables
const apiKey = process.env.STRIPE_API_KEY;
📖 Add to .gitignore: .envjavascript
// 当你输入:
const apiKey = 'sk_live_1234567890abcdef';
// 我会立即告警:
🚨 严重警告:检测到暴露的Stripe API密钥!
📍 文件:config.js,第3行
🔧 修复方案:使用环境变量
const apiKey = process.env.STRIPE_API_KEY;
📖 建议:将.env添加到.gitignore中AWS Credentials
AWS凭据
python
undefinedpython
undefinedYou type:
当你输入:
aws_access_key = "AKIAIOSFODNN7EXAMPLE"
aws_access_key = "AKIAIOSFODNN7EXAMPLE"
I alert:
我会告警:
🚨 CRITICAL: AWS access key exposed!
📍 File: aws_config.py, Line 1
🔧 Fix: Use AWS credentials file or environment variables
aws_access_key = os.getenv("AWS_ACCESS_KEY_ID")
📖 Never commit AWS credentials
undefined🚨 严重警告:AWS访问密钥已暴露!
📍 文件:aws_config.py,第1行
🔧 修复方案:使用AWS凭据文件或环境变量
aws_access_key = os.getenv("AWS_ACCESS_KEY_ID")
📖 切勿提交AWS凭据
undefinedDatabase Password
数据库密码
yaml
undefinedyaml
undefinedYou type in docker-compose.yml:
当你在docker-compose.yml中输入:
environment:
DB_PASSWORD: "mySecretPassword123"
environment:
DB_PASSWORD: "mySecretPassword123"
I alert:
我会告警:
🚨 CRITICAL: Database password in configuration file!
📍 File: docker-compose.yml, Line 5
🔧 Fix: Use .env file
DB_PASSWORD: ${DB_PASSWORD}
📖 Add .env to .gitignore
undefined🚨 严重警告:配置文件中存在数据库密码!
📍 文件:docker-compose.yml,第5行
🔧 修复方案:使用.env文件
DB_PASSWORD: ${DB_PASSWORD}
📖 建议:将.env添加到.gitignore中
undefinedDetection Patterns
检测模式
Pattern Types
模式类型
High Confidence:
- Known API key formats (Stripe, AWS, etc.)
- Private key headers
- JWT tokens
- Connection strings with credentials
Medium Confidence:
- Variables named "password", "secret", "key"
- Base64 encoded strings in sensitive contexts
- Long random strings in assignments
Low Confidence (Flagged for Review):
- Generic secret patterns
- Potential credentials in comments
高可信度:
- 已知API密钥格式(Stripe、AWS等)
- 私钥头部
- JWT令牌
- 包含凭据的连接字符串
中可信度:
- 命名为"password"、"secret"、"key"的变量
- 敏感上下文下的Base64编码字符串
- 赋值语句中的长随机字符串
低可信度(标记待审核):
- 通用密钥模式
- 注释中可能存在的凭据
Git Integration
Git集成
Pre-Commit Protection
提交前防护
bash
undefinedbash
undefinedBefore commit, I scan:
提交前,我会扫描:
git add .
git commit
git add .
git commit
I block if secrets found:
如果检测到密钥,我会阻止提交:
🚨 CRITICAL: Cannot commit - secrets detected!
📍 3 secrets found:
- config.js:12 - API key
- .env:5 - Database password (in gitignore - OK)
- auth.js:45 - JWT secret
❌ Commit blocked - remove secrets first
undefined🚨 严重警告:无法提交 - 检测到密钥!
📍 共检测到3处密钥:
- config.js:12 - API密钥
- .env:5 - 数据库密码(已在gitignore中 - 合规)
- auth.js:45 - JWT密钥
❌ 提交已阻止 - 请先移除密钥
undefined.gitignore Validation
.gitignore 有效性检查
I check if sensitive files are in .gitignore:
✅ .env - In .gitignore (good)
⚠️ config/secrets.json - NOT in .gitignore (add it!)
✅ .aws/credentials - In .gitignore (good)我会检查敏感文件是否已加入.gitignore:
✅ .env - 已在.gitignore中(合规)
⚠️ config/secrets.json - 未在.gitignore中(请添加!)
✅ .aws/credentials - 已在.gitignore中(合规)False Positive Handling
误报处理
Example Files
示例文件
javascript
// I understand these are examples:
// Example: const apiKey = 'your_api_key_here';
// TODO: Add your API key from environmentjavascript
// 我会识别这些是示例内容:
// 示例:const apiKey = 'your_api_key_here';
// TODO: 从环境变量中添加你的API密钥Test Files
测试文件
javascript
// Test fixtures are OK (but flagged for review):
const mockApiKey = 'sk_test_1234567890abcdef'; // ✅ Test keyjavascript
// 测试用例是允许的(但会标记待审核):
const mockApiKey = 'sk_test_1234567890abcdef'; // ✅ 测试密钥Documentation
文档内容
markdown
<!-- Documentation examples are flagged but low priority -->
Set your API key: `export API_KEY=your_key_here`markdown
<!-- 文档中的示例会被标记但优先级较低 -->
设置你的API密钥:`export API_KEY=your_key_here`Relationship with security-auditor
与security-auditor的关系
secret-scanner (me): Exposed secrets and credentials
security-auditor: Code vulnerability patterns
secret-scanner(本工具): 检测暴露的密钥与凭据
security-auditor: 检测代码漏洞模式
Together
协同作用
secret-scanner: Finds hardcoded API key
security-auditor: Finds how the key is used insecurely
Combined: Complete security picturesecret-scanner:发现硬编码的API密钥
security-auditor:发现该密钥的不安全使用方式
结合使用:提供完整的安全视图Quick Fixes
快速修复方案
Move to Environment Variables
迁移至环境变量
javascript
// Before:
const apiKey = 'sk_live_abc123';
// After:
const apiKey = process.env.API_KEY;
// .env file (add to .gitignore):
API_KEY=sk_live_abc123javascript
// 修复前:
const apiKey = 'sk_live_abc123';
// 修复后:
const apiKey = process.env.API_KEY;
// .env文件(需加入.gitignore):
API_KEY=sk_live_abc123Use Secret Management
使用密钥管理服务
javascript
// AWS Secrets Manager
const AWS = require('aws-sdk');
const secrets = new AWS.SecretsManager();
const secret = await secrets.getSecretValue({ SecretId: 'myApiKey' }).promise();javascript
// AWS Secrets Manager
const AWS = require('aws-sdk');
const secrets = new AWS.SecretsManager();
const secret = await secrets.getSecretValue({ SecretId: 'myApiKey' }).promise();Configuration Files
配置文件
yaml
undefinedyaml
undefineddocker-compose.yml
docker-compose.yml
services:
app:
environment:
- API_KEY=${API_KEY} # From .env file
services:
app:
environment:
- API_KEY=${API_KEY} # 来自.env文件
.env (gitignored)
.env(已加入.gitignore)
API_KEY=sk_live_abc123
undefinedAPI_KEY=sk_live_abc123
undefinedSandboxing Compatibility
沙箱兼容性
Works without sandboxing: ✅ Yes (recommended)
Works with sandboxing: ✅ Yes
- Filesystem: Read-only access
- Network: None required
- Configuration: None required
无沙箱环境下可用: ✅ 是(推荐)
沙箱环境下可用: ✅ 是
- 文件系统: 只读权限
- 网络: 无需网络
- 配置: 无需额外配置
Customization
自定义配置
Add company-specific secret patterns:
bash
cp -r ~/.claude/skills/security/secret-scanner \
~/.claude/skills/security/company-secret-scanner添加企业专属密钥检测模式:
bash
cp -r ~/.claude/skills/security/secret-scanner \
~/.claude/skills/security/company-secret-scannerEdit SKILL.md to add:
编辑SKILL.md添加以下内容:
- Internal API key formats
- 内部API密钥格式
- Company-specific secret patterns
- 企业专属密钥检测模式
- Custom detection rules
- 自定义检测规则
undefinedundefinedBest Practices
最佳实践
- Never commit secrets - Use environment variables
- Use .gitignore - Add .env, secrets.json, etc.
- Rotate exposed secrets - If committed, rotate immediately
- Use secret management - AWS Secrets Manager, HashiCorp Vault
- Audit regularly - Review code for exposed secrets
- 切勿提交密钥 - 使用环境变量
- 合理使用.gitignore - 将.env、secrets.json等文件加入其中
- 轮换泄露的密钥 - 若已提交,立即轮换
- 使用密钥管理服务 - 如AWS Secrets Manager、HashiCorp Vault
- 定期审计 - 检查代码中是否存在暴露的密钥
Emergency Response
应急响应
If Secret Committed
若密钥已提交
- Rotate the secret immediately
- Remove from git history
bash
git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch config/secrets.json" \ --prune-empty --tag-name-filter cat -- --all - Force push (coordinate with team)
- Update all deployments with new secret
- 立即轮换密钥
- 从Git历史中移除
bash
git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch config/secrets.json" \ --prune-empty --tag-name-filter cat -- --all - 强制推送(需与团队协调)
- 更新所有部署环境以使用新密钥
Related Tools
相关工具
- security-auditor skill: Vulnerability detection
- @code-reviewer sub-agent: Security review
- /review command: Comprehensive security check
- security-auditor 技能: 漏洞检测
- @code-reviewer 子Agent: 安全审核
- /review 命令: 全面安全检查