JANGAN PERNAH commit file dengan kredensial asli ke repository public!
# Copy template dan edit dengan kredensial asli
cp config/config.py config/config_local.py
# Edit config_local.py dengan kredensial asli
# File ini sudah ada di .gitignore
# Buat file .env dari template
cp .env.template .env
# Edit .env dengan kredensial asli
# File ini sudah ada di .gitignore
# Gunakan private key instead of password
SSH_CONFIG = {
'host': 'your-server.com',
'username': 'your-user',
'private_key_path': '/path/to/private/key',
'private_key_password': 'key_password_if_any'
}
config/config.py
(template dengan placeholder).env.template
(template environment variables)- Semua file dokumentasi
- Source code tanpa kredensial
config/config_local.py
(kredensial asli).env
(environment variables asli)- File dengan suffix
*_credentials.py
,*_secrets.py
- File dengan kredensial hardcoded
# Cek apakah ada file sensitif yang akan di-commit
git status
# Cek isi file yang akan di-commit
git diff --cached
# Pastikan .gitignore sudah benar
cat .gitignore | grep -E "(config_local|\.env|credentials|secrets)"
- SEGERA ganti semua password/key
- Hapus dari git history:
# Hapus file dari history git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch config/config_local.py' \ --prune-empty --tag-name-filter cat -- --all # Force push git push --force --all
- Gunakan SSH Key Authentication (lebih aman dari password)
- Rotate credentials secara berkala
- Gunakan environment variables di production
- Audit git log sebelum push ke public repo
- Setup branch protection di GitHub
# Setiap developer membuat config_local.py sendiri
echo "config/config_local.py" >> .gitignore
echo ".env" >> .gitignore
# Bagikan template via dokumentasi, bukan file
# Developer setup sendiri dengan kredensial mereka
Catatan: File ini hanya panduan. Selalu ikuti security policy organisasi Anda.