Lukas2006 LogoLukas2006
Stabil21.08.2026

v0.48.0 · Phase 5: Kontaktformular Anti-Spam & Abuse Protection

WICHTIG

Lukas2006 v0.48.0 – Phase 5: Kontaktformular Anti-Spam & Abuse Protection

WICHTIG
Die Anti-Spam-Prüfung läuft jetzt VOR:
- Vorgangserstellung
- Datei-/Anhangspeicherung
- Projekt-Routing
- Besitzer-E-Mail
- automatischer Kopie an den Absender

Honeypot
- bestehendes Honeypot-Prinzip verstärkt
- Feld ist nicht mehr mit dem HTML-hidden-Attribut markiert, sondern nur visuell außerhalb des Viewports versteckt
- typische Formular-Bots sehen das Feld dadurch eher
- ausgefüllter Honeypot wird sofort blockiert
- Bot erhält absichtlich eine neutrale Fake-Erfolgsmeldung, damit er den Filter nicht einfach optimieren kann

Zeitbasierte Formularprüfung
- jedes geladene Kontaktformular bekommt einen einmaligen serverseitigen Token
- Token wird in der Session mit Erstellungszeit gespeichert
- Token ist nur einmal verwendbar
- Absenden unter 3 Sekunden wird blockiert
- Token verfällt nach 2 Stunden
- manipulierte oder fehlende Tokens werden blockiert
- maximal 8 offene Formular-Tokens pro Browser-Session

Rate Limiting
Pro IP:
- maximal 3 Formularversuche in 15 Minuten
- maximal 10 in 60 Minuten

Pro E-Mail-Adresse:
- maximal 3 Formularversuche in 15 Minuten
- maximal 6 in 60 Minuten

- IP und E-Mail werden nicht im Klartext im Abuse-Log gespeichert
- stattdessen HMAC-SHA256 mit installationsspezifischem Schlüssel
- bei Rate Limit wird Retry-After gesetzt

Duplicate Detection
- identische Kombination aus E-Mail + Betreff + Nachricht wird 6 Stunden lang als Duplikat erkannt
- identische Anfrage erzeugt keinen neuen Vorgang und keine neue E-Mail

Spam Score
Zusätzliche heuristische Bewertung u. a. für:
- sehr viele Links
- typische Massen-Spam-Begriffe
- HTML-/Link-Spam
- extrem kurze Nachrichten
- lange Zeichenwiederholungen
- überwiegend Großbuchstaben
- Header-Injection-Muster
- ungewöhnliche E-Mail-Muster

- Score ab 70 wird vor Vorgangserstellung blockiert
- schwächere Signale werden protokolliert, führen alleine aber nicht zur Sperre

Abuse Logging
Neue Tabelle: contact_abuse_events
Erfasst datensparsam:
- gehashte IP
- gehashte E-Mail
- Nachrichten-Fingerprint
- Entscheidung accepted / blocked
- Grund
- Spam-Score
- Formularalter
- gehashter User-Agent
- Zeitpunkt

Aktivitätsprotokoll:
- Honeypot
- Timing-Block
- Rate Limit
- Duplikate
- hoher Spam-Score

Aufbewahrung
- Abuse-Ereignisse werden opportunistisch nach 30 Tagen bereinigt.

Kein CAPTCHA
- bewusst zunächst kein Google reCAPTCHA, hCaptcha oder Cloudflare Turnstile
- echte Besucher müssen kein Puzzle lösen und es wird kein zusätzlicher Drittanbieter eingebunden
- falls der Angriff diese mehrschichtige lokale Schutzschicht umgeht, kann CAPTCHA/Turnstile später als Eskalationsstufe ergänzt werden
Teilen