Files
HKW/SECURITY.md
2026-02-03 09:01:55 +01:00

4.1 KiB

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:

cp .env.example .env

Tragen Sie Ihre echten Zugangsdaten ein:

HKW_SMTP_PASS=Ihr_echtes_Passwort
HKW_RECAPTCHA_SECRET=Ihr_reCAPTCHA_Secret

2. Berechtigungen setzen

# 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)

# 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:

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:

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):

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

# 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

Letzte Aktualisierung: 3. Februar 2026