# HKW Anwälte - Sicherheitsdokumentation ## PHPMailer Sicherheitskonfiguration ### Wichtige Sicherheitsmaßnahmen implementiert: #### 1. **Konfigurationsdatei-Schutz** - `config.php` ist jetzt außerhalb des Webroots verfügbar - `.htaccess` blockiert direkten Zugriff auf Konfigurationsdateien - Unterstützung für Umgebungsvariablen (.env) #### 2. **Verbesserte Input-Validierung** - XSS-Schutz durch htmlspecialchars - Header-Injection-Schutz (keine Newlines in E-Mail/Namen) - Längenbeschränkungen für alle Felder - Erweiterte Spam-Wort-Blacklist - E-Mail-Domain-Blacklist #### 3. **Rate Limiting** - Max. 5 E-Mails pro Stunde pro IP - Hash-basierte Datei-Speicherung mit LOCK_EX - Zeitbasierte Formular-Validierung (mind. 5 Sek.) #### 4. **reCAPTCHA-Integration** - Erweiterte Validierung mit Timeout - SSL-Verifizierung aktiviert - Fehlerbehandlung mit Logging #### 5. **Datei-Upload-Sicherheit** - Maximale Dateigröße: 20 MB - Erlaubte Dateitypen: PDF, DOC, DOCX, JPG, JPEG, PNG - Größenvalidierung vor Upload #### 6. **Weitere Sicherheitsmaßnahmen** - Honeypot-Feld gegen Spam-Bots - CSRF-Token-Unterstützung vorbereitet - Security Headers in .htaccess - Fehlerausgabe deaktiviert (nur Logging) --- ## Installation & Konfiguration ### 1. Umgebungsvariablen einrichten Erstellen Sie eine `.env` Datei basierend auf `.env.example`: ```bash cp .env.example .env ``` Tragen Sie Ihre echten Zugangsdaten ein: ```env HKW_SMTP_PASS=Ihr_echtes_Passwort HKW_RECAPTCHA_SECRET=Ihr_reCAPTCHA_Secret ``` ### 2. Berechtigungen setzen ```bash # Konfigurationsdatei schützen chmod 600 config.php # .env Datei schützen chmod 600 .env # Forms-Verzeichnis chmod 755 forms/ chmod 644 forms/.htaccess ``` ### 3. config.php außerhalb Webroot verschieben (empfohlen) ```bash # Erstellen Sie ein sicheres Config-Verzeichnis mkdir -p /home/sebastian/config # Verschieben Sie die config.php mv config.php /home/sebastian/config/hkw-config.php # Passen Sie dann den Pfad in contact.php an (Zeile 12) ``` ### 4. Apache/Nginx konfigurieren #### Apache (.htaccess bereits vorhanden): - Stellen Sie sicher, dass `AllowOverride All` gesetzt ist #### Nginx: ```nginx location ~ /(config\.php|\.env|test-.*\.php) { deny all; } ``` --- ## Wartung & Updates ### PHPMailer aktualisieren Das Projekt verwendet jetzt **PHPMailer 7.0.2** (aktuellste Version vom Januar 2026). Zum manuellen Update: ```bash cd assets/vendor/phpmailer # Backup erstellen cp -r src ../phpmailer-backup # Neue Version von GitHub herunterladen wget https://github.com/PHPMailer/PHPMailer/archive/refs/tags/v7.0.2.zip unzip v7.0.2.zip # Dateien kopieren... ``` Oder via Composer (empfohlen): ```bash composer require phpmailer/phpmailer:^7.0 ``` **Aktuelle Version: 7.0.2** (Stand: 3. Februar 2026) #### Wichtige Änderungen in Version 7.x: - Verbesserte PHP 8.x Kompatibilität - Erweiterte Sicherheitsfeatures - Bessere Error Handling - Modernisierte Codebase - Keine Breaking Changes zu 6.x (API-kompatibel) ### Logs überprüfen ```bash # PHP Error Log tail -f /var/log/apache2/error.log # Custom Error Log (falls konfiguriert) tail -f /path/to/error.log ``` --- ## Checkliste für Produktivbetrieb - [ ] `.env` Datei mit echten Credentials erstellt - [ ] `config.php` außerhalb Webroot verschoben (optional aber empfohlen) - [ ] Berechtigungen auf 600 für sensible Dateien gesetzt - [ ] reCAPTCHA Secret Key eingetragen - [ ] SMTP-Zugangsdaten geprüft - [ ] `.gitignore` aktiv (.env wird nicht committed) - [ ] Test-E-Mail erfolgreich versendet - [ ] Rate Limiting getestet - [ ] Formular-Validierung getestet - [ ] File-Upload getestet - [ ] Error Logging funktioniert --- ## Bekannte Limitierungen 1. **Rate Limiting**: Basiert auf IP-Adresse, kann bei Shared IPs problematisch sein 2. **Temporäre Dateien**: Rate-Limit-Daten werden in `/tmp` gespeichert 3. **reCAPTCHA**: Benötigt Internetverbindung zu Google-Servern --- ## Support & Updates - PHPMailer: https://github.com/PHPMailer/PHPMailer - reCAPTCHA: https://www.google.com/recaptcha/admin **Letzte Aktualisierung**: 3. Februar 2026