Der Angriff, den niemand sieht, kommt über das Kontaktformular deiner Website
Das Kontaktformular wirkt harmlos. Es ist die offenste Tür, die du hast, und fast niemand schließt sie ab.
Jeder schützt den Login. Niemand schaut auf das Kontaktformular. Und trotzdem nimmt es Eingaben von jedem entgegen. Ohne Authentifizierung, ohne Hürde, oft nicht mal mit einer Begrenzung der Sendungen.
Genau diese Asymmetrie sucht der Angreifer. Ein Textfeld, das mit deinem Mailserver spricht, mit deiner Datenbank oder mit einem internen Webhook. Du siehst ein Feld namens "Nachricht". Er sieht eine Kommandozeile.
Warum dieses Ziel so verlockend ist
Ein Kontaktformular vereint drei seltene Eigenschaften an einem Ort. Es nimmt nicht vertrauenswürdige Eingaben an. Es führt Logik auf dem Server aus. Und es wird fast nie geprüft. Der Entwickler hat getestet, dass die Nachricht per Mail ankommt. Da hat er aufgehört.
Das Problem ist: "Die Nachricht kommt per Mail an" verbirgt einen ganzen Weg. Der Text des Nutzers wird in einen SMTP-Header eingebaut, in eine Query verkettet oder an einen Drittdienst geschickt. Jede dieser Grenzen ist eine Gelegenheit zur Injektion.
Injektion von E-Mail-Headern
Der klassische Fall heißt Email Header Injection. Wenn du das Feld "Betreff" oder "Absender" nimmst und direkt in den Header der Nachricht klebst, schreibt ein Angreifer einen Zeilenumbruch und fügt seine eigenen Header hinzu. Ein Bcc an tausend Adressen, zum Beispiel.
Plötzlich verschickt dein Server Spam. Nicht zufällig in deinem Namen, sondern buchstäblich über deine Infrastruktur, mit deiner IP und deiner Domain. Das Ergebnis ist absehbar: Die großen Anbieter stufen deine Domain als Spamquelle ein, und deine geschäftliche Mail kommt nirgends mehr an.
Wenn Text zu Code wird
Dann gibt es die schlimmeren Szenarien. Speicherst du die Nachricht in einer Datenbank, ohne die Query zu parametrisieren, öffnest du die Tür für SQL Injection. Zeigst du die Nachricht in einem Admin-Panel, ohne das HTML zu escapen, pflanzt der Angreifer ein Skript, das im Browser deines Teams läuft, sobald es den Lead öffnet. Das ist Stored XSS, einer der am meisten unterschätzten Angriffsvektoren überhaupt.
Achte auf das Muster. In keinem dieser Fälle ist der Angreifer irgendwo "eingebrochen". Er hat das Formular genau so benutzt, wie es benutzt werden soll. Die Schwachstelle ist kein exotischer Fehler. Es ist das Fehlen einer einfachen Regel: Vertraue nie dem, was hereinkommt.
Was zu tun ist, nach Priorität geordnet
Du brauchst weder eine WAF noch einen Sicherheitsberater, um 90 Prozent davon zu schließen. Du brauchst Disziplin an vier Punkten.
- Validiere auf dem Server, nie nur im Browser. Validierung im Frontend ist Komfort für den Nutzer, keine Sicherheit. Der Angreifer benutzt dein Formular nicht, er sendet direkt einen POST an den Endpoint.
- Escape bei der Ausgabe, immer. Beim Speichern in der Datenbank nutzt du parametrisierte Queries. Beim Anzeigen in einem Panel escapst du das HTML. Behandle jede Nachricht als feindlich, bis das Gegenteil bewiesen ist.
- Lehne Zeilenumbrüche in Header-Feldern ab. Betreff, Name und E-Mail haben keinen Grund, \r oder \n zu enthalten. Filtere sie heraus, bevor du SMTP berührst.
- Begrenze die Senderate und füge eine unsichtbare Herausforderung hinzu. Rate Limiting pro IP und ein Honeypot oder hCaptcha stoppen automatische Bots, ohne die Erfahrung echter Menschen zu ruinieren.
Und die Seite, die fast alle vergessen
Ein Kontaktformular sammelt personenbezogene Daten. Name, E-Mail, oft Telefon und den Inhalt der Nachricht. Damit stehst du unter der DSGVO, ob du willst oder nicht. Du brauchst eine Rechtsgrundlage, um diese Daten zu verarbeiten, und die Einwilligung muss informiert sein.
In der Praxis bedeutet das drei konkrete Dinge. Einen klaren Datenschutzhinweis, verlinkt am Formular. Eine definierte Rechtsgrundlage, typischerweise das berechtigte Interesse aus Artikel 6 oder die ausdrückliche Einwilligung. Und eine Aufbewahrungsrichtlinie, denn Leads für immer zu speichern ist keine Strategie, sondern angehäufte Haftung. Wird dir die Lead-Datenbank gestohlen, ist das Problem nicht mehr technisch, sondern regulatorisch.
Formularsicherheit ist keine teure Firewall. Sie ist die Weigerung, dem Text zu vertrauen, den ein Fremder geschrieben hat.— Krivar Diário
Die Moral ist langweilig, und genau deshalb funktioniert sie. Der Angriff, den niemand sieht, kommt durch die Tür, auf die niemand schaut. Behandle dein Kontaktformular mit demselben Respekt, den du dem Login gibst, und die meisten dieser Probleme treten nie ein.