first commit
This commit is contained in:
172
SECURITY.md
Normal file
172
SECURITY.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user