48fe69cdab
Pentest Runde 17: 21.1 Access-Token TTL war 7 Tage statt 15min: docker-compose.yml und .env.example standen schon richtig auf 15m als Default. Die alten Beispiel-.env-Files (backend/.env.example, docker/.env.example) hatten noch die alte Konvention "7d". Beide auf 15m korrigiert + explizites JWT_REFRESH_EXPIRES_IN=7d ergänzt. Auf prod muss die echte .env entsprechend angepasst werden. 17.5 Alte Pentest-Daten in DB: Cleanup-Script erweitert um Pentest-Marker-Erkennung: - Email-Pattern: ^hacker@, ^attacker@, ^pentest@, @evil\. - XSS-Marker: <script, onerror=, javascript: - Sonstige: SQL-Injection, Path-Traversal Bewusst eng gefasst (Marker MUSS am Email-Anfang stehen), damit legitime Kunden wie "stefanhacker@gmx.de" nicht als Pentest-Daten durchgehen. Default: nur warnen + Records auflisten. Opt-In via CLEANUP_PURGE_PENTEST=true löscht die markierten Customer/User. Live-verifiziert: - stefanhacker@gmx.de (echt) → durchgelassen - hacker@evil.de (Pentest) → erkannt + Warnung - Mit Purge-Env → gelöscht 18.4 Klartext-Portal-PW-Abruf: Bewusst drin gelassen (Admin-UI-Komfort). Endpoint ist mit customers:update-Permission gated + Audit-Log (READ → PortalPassword) – kein Bypass-Risiko, nur explizite Audit-Pflicht. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
852 B
Bash
30 lines
852 B
Bash
# OpenCRM Docker Environment
|
|
# ============================
|
|
# Copy this file to .env and adjust the values
|
|
|
|
# Domain (for Caddy SSL certificate)
|
|
# Use your actual domain, e.g., crm.example.com
|
|
DOMAIN=localhost
|
|
|
|
# Database
|
|
DB_ROOT_PASSWORD=change-this-root-password
|
|
DB_NAME=opencrm
|
|
DB_USER=opencrm
|
|
DB_PASSWORD=change-this-password
|
|
|
|
# JWT Authentication
|
|
# Generate with: openssl rand -base64 32
|
|
JWT_SECRET=change-this-to-a-secure-random-string
|
|
# Access-Token kurz (XSS-Schutz, Token lebt nur im JS-Memory).
|
|
# Refresh-Token lang im httpOnly-Cookie.
|
|
JWT_EXPIRES_IN=15m
|
|
JWT_REFRESH_EXPIRES_IN=7d
|
|
|
|
# Encryption Key (for portal credentials)
|
|
# Generate with: openssl rand -hex 32
|
|
ENCRYPTION_KEY=change-this-to-a-32-byte-hex-key
|
|
|
|
# First Install: Set to "true" to seed database on first startup
|
|
# After first successful start, set back to "false"
|
|
RUN_SEED=true
|