API keys, tokens, and credentials must never be committed to source control or copied into sample configs. Secret exposure enables account takeover and data exfiltration. Use environment variables, secret managers, and pre‑commit scanners to prevent accidental leaks across repositories.
Secrets such as API keys, database credentials, JWT tokens, and private certificates must never be committed into version control (Git, SVN, etc.). Once stored in a public or shared repository, these secrets can be leaked permanently even if later removed, leading to account takeover, database breaches, and privilege escalation.
Ensuring that no secrets exist in version control protects sensitive data and enforces proper use of environment variables or secret management systems (e.g., Vault, AWS Secrets Manager).
# Use git-secrets or trufflehog to detect exposed keys
git secrets --scan-history
trufflehog git file://. --since-commit=HEAD~50
# Expected: no matches for API keys, tokens, or passwords
# Inspect sensitive files
ls -l app/etc/env.php
ls -l .env
# Ensure these are ignored in .gitignore
.env, app/etc/env.php) to .gitignore.# In Git history
DB_PASSWORD="supersecret123"
STRIPE_API_KEY="sk_live_abc123"
# Secrets committed → FAIL
# .gitignore
.env
app/etc/env.php
# Secrets stored in Vault / ENV vars, not in Git → PASS