API-Schluessel sind die einfachste Form der Authentifizierung – und die am haeufigsten kompromittierte. Schluessel in GitHub, im Frontend, ohne Ablaufdatum.
Generierung¶
import secrets, hashlib def generate_api_key(prefix=”sk”): raw = secrets.token_urlsafe(32) full = f”{prefix}_{raw}” hash = hashlib.sha256(full.encode()).hexdigest() return full, hash # full → dem Benutzer EINMAL, hash → in die DB
Speicherung¶
❌ API_KEY = “sk_live_abc123” # Im Code!¶
✅ os.environ[‘STRIPE_API_KEY’]¶
✅ Secret Manager (Vault, AWS SM, Azure KV)¶
Best Practices¶
- Schluessel in der DB hashen (SHA-256)
- Praefix zur Unterscheidung (sk_live_, sk_test_)
- Ablaufdatum und Rotation
- Scope – minimale Berechtigungen pro Schluessel
- Pre-Commit-Hooks (gitleaks, truffleHog)
Wichtigste Erkenntnis¶
API-Schluessel hashen, rotieren, Scope einschraenken. Niemals in Git committen.
securityapiklíčemanagement