Zum Inhalt springen
Abstraktes Relief aus dunklem Papier: drei fast unsichtbare Scheiben fangen kleine Teilchen ab, nur wenige kommen durch

Spam über Kontaktformulare: Schutz ohne lästige Captchas

Formular-Spam verhindern Sie ohne Captcha meist mit drei unsichtbaren Schichten: einem Honeypot-Feld, einer Zeitprüfung und serverseitigen Grenzen für Anzahl und Inhalt der Anfragen. Ein Captcha brauchen Sie erst, wenn gezielte Angriffe diese Schichten überwinden, und dann besser eines ohne Bilderrätsel.

6 min Lesezeit Laravel & PHP

Spam im Kontaktformular verdeckt echte Anfragen, bindet Zeit beim Aussortieren und kann über automatische Bestätigungsmails den Ruf Ihrer Domain beschädigen. Für die Webseiten, die wir bauen, gehört der Schutz deshalb zum Grundgerüst jedes Formulars, und zwar so, dass Besucher davon nichts merken.

Ursachen

Woher Formular-Spam kommt

Der größte Teil des Spams über Kontaktformulare stammt von automatisierten Programmen, die das Netz nach Formularen absuchen und sie mit Werbung, Links oder Schadsoftware-Verweisen füllen. Diese Bots füllen jedes Feld aus, das sie finden, und schicken das Formular in Sekundenbruchteilen ab. Gegen sie helfen schon schlichte technische Hürden zuverlässig.

Schwieriger sind zwei andere Quellen:

  • Menschen in Klickfarmen: Sie füllen Formulare von Hand aus, gegen Bezahlung. Kein technischer Filter erkennt einen echten Menschen, nur der Inhalt verrät die Absicht.

  • KI-generierte Nachrichten: Seit Sprachmodelle günstig verfügbar sind, kommen Spam-Nachrichten in gutem Deutsch, mit Bezug auf Ihre Website und den Namen Ihres Unternehmens. Inhaltsfilter mit Wortlisten greifen bei ihnen schlecht.

Ein Risiko, das oft übersehen wird: Formulare mit der Option „Kopie an mich senden“ oder mit einer automatischen Eingangsbestätigung, die den Text der Anfrage enthält. Bots tragen dann eine fremde Adresse als Absender ein und nutzen Ihren Mailserver, um Werbung an diese Adresse zu verschicken. Die Mail kommt von Ihrer Domain, mit gültigem SPF und DKIM. Beschwerden der Empfänger schaden dann dem Ruf Ihrer Domain, und Ihre normalen Mails landen häufiger im Spam-Ordner. Eingangsbestätigungen sollten deshalb nie den eingegebenen Text wiederholen.

Vor dem Formular liegt eine orange gestrichelte Falle, ein grauer Bot-Würfel ist hineingetappt und bleibt dort.

Unsichtbare Fallen

Honeypot und Zeitprüfung

Ein Honeypot ist ein zusätzliches Formularfeld, das Menschen nicht sehen und Bots trotzdem ausfüllen. Ist es bei der Übertragung gefüllt, wird die Anfrage verworfen. Für Besucher ändert sich nichts.

Damit der Honeypot funktioniert und niemanden ausschließt, kommt es auf Details an:

  • Nicht als verstecktes Feld: Ein Feld vom Typ hidden überspringen viele Bots. Besser ist ein normales Textfeld, das per CSS außerhalb des sichtbaren Bereichs liegt.

  • Unauffälliger Name: Ein Feldname wie „website“ oder „fax“ lockt Bots eher als „honeypot“.

  • Barrierefrei: Das Feld bekommt tabindex="-1", damit Tastaturnutzer nicht hineinspringen, und eine Beschriftung wie „Bitte leer lassen“ für Screenreader. Mit autocomplete="off" verhindern Sie, dass der Browser es automatisch füllt.

Die Zeitprüfung ergänzt den Honeypot. Beim Laden des Formulars wird ein verschlüsselter Zeitstempel mitgeschickt. Kommt die Anfrage nach weniger als drei Sekunden zurück, war es kein Mensch. Wichtig ist die Verschlüsselung: Ein Zeitstempel im Klartext lässt sich fälschen.

In Statamic ist ein Honeypot eingebaut und wird in der Konfiguration des Formulars mit einem Feldnamen aktiviert. Für Laravel bietet das Paket spatie/laravel-honeypot Honeypot und Zeitprüfung zusammen. Gegen ungezielten Massenspam reichen diese beiden Maßnahmen oft schon aus. Sie wirken nicht gegen Menschen und nicht gegen Bots, die gezielt für Ihre Website geschrieben wurden.

Captchas

Captchas und ihre Datenschutzfragen

Ein Captcha prüft, ob ein Mensch vor dem Bildschirm sitzt. Klassische Bilderrätsel („Wählen Sie alle Ampeln“) kosten Besucher Zeit und schließen Menschen mit Sehbehinderung aus; das W3C beschreibt dieses Problem in einer eigenen Note. Für ein Kontaktformular, das Anfragen bringen soll, ist jede zusätzliche Hürde eine verlorene Anfrage.

Die unsichtbaren Varianten haben andere Nachteile:

  • Google reCAPTCHA: bewertet das Verhalten des Besuchers im Hintergrund und lädt dafür Skripte von Google. Seit dem 02.04.2026 tritt Google dabei als Auftragsverarbeiter auf, der Websitebetreiber ist allein verantwortlich. Weil der Dienst auf das Endgerät zugreift, wird überwiegend eine Einwilligung nach § 25 TDDDG für nötig gehalten. Prüft das Formular auf dem Server, ob das Captcha gelöst wurde, können Besucher ohne diese Einwilligung es nicht mehr absenden. Für ein Kontaktformular, über das Anfragen kommen sollen, ist das eine schlechte Kombination.

  • Cloudflare Turnstile und hCaptcha: ähnliche Bewertung im Hintergrund, mit Datenübermittlung an den jeweiligen Anbieter.

  • Proof-of-Work-Verfahren: Friendly Captcha oder das quelloffene ALTCHA lassen den Browser eine kleine Rechenaufgabe lösen, die für einen Menschen unmerklich ist und für massenhafte Anfragen teuer wird. ALTCHA lässt sich vollständig auf dem eigenen Server betreiben, ohne Drittanbieter.

Wenn ein Captcha nötig wird, wählen Sie ein Proof-of-Work-Verfahren auf eigenem Server. Wie Sie Werbung und Messung ohne Einwilligungsflut betreiben, beschreibt der Beitrag Performance Marketing ohne Cookie-Plage.

Server

Serverseitige Filter und Rate-Limits

Alles, was im Browser geprüft wird, lässt sich umgehen. Die letzte Schicht liegt deshalb auf dem Server und prüft, wie oft und was geschickt wird.

Rate-Limits

Rate-Limiting begrenzt die Zahl der Anfragen pro Absender und Zeitraum. In Laravel genügt dafür die Middleware throttle an der Formular-Route. Der Wert 5,1 steht für höchstens fünf Anfragen pro Minute und IP-Adresse:

routes/web.php php
Route::post('/kontakt', [ContactController::class, 'store'])
    ->middleware('throttle:5,1');

Für ein Kontaktformular sind auch strengere Werte vertretbar, etwa zehn pro Stunde. Ein Mensch schickt selten mehr als zwei Anfragen. Hinter Unternehmensnetzen und Mobilfunk teilen sich allerdings viele Menschen eine IP-Adresse. Setzen Sie die Grenze deshalb nicht so eng, dass ein zweiter Kollege aus demselben Büro abgewiesen wird, und zeigen Sie bei einer Ablehnung eine verständliche Meldung mit Telefonnummer statt einer leeren Fehlerseite.

Inhaltsfilter

Inhaltsfilter prüfen, was im Formular steht. Diese Muster sind in Kontaktanfragen deutliche Zeichen:

  • Mehr als ein oder zwei Links in einer Kontaktanfrage sind fast immer Spam.

  • Felder mit HTML-Tags oder BBCode wie [url] stammen aus Spam-Programmen.

  • Eine Mailadresse, deren Domain keinen Mailserver hat, ist nicht erreichbar.

  • Dieselbe Nachricht mehrmals hintereinander von verschiedenen Adressen ist eine Kampagne.

Verwerfen Sie verdächtige Anfragen nicht stillschweigend. Legen Sie sie in einen eigenen Bereich, den jemand einmal pro Woche durchsieht. So fallen Fehlalarme auf, bevor eine echte Anfrage verloren geht. Welche Formulardaten Sie überhaupt speichern dürfen und wie lange, gehört in Ihre Prüfliste für den Datenschutz auf der Website.

Kurz beantwortet

Häufige Fragen

  • Es hängt vom Verfahren ab. Dienste, die das Verhalten im Hintergrund auswerten und Daten an Dritte übermitteln, gelten überwiegend als einwilligungspflichtig. Proof-of-Work-Verfahren auf dem eigenen Server kommen ohne Drittanbieter und ohne Verhaltensauswertung aus und sind deutlich weniger heikel.

  • Gegen massenhaften, ungezielten Spam bleibt ein Honeypot lange wirksam, weil diese Programme nicht für einzelne Websites angepasst werden. Wer Ihr Formular gezielt angreift, erkennt das Feld nach kurzer Zeit. Deshalb gehören Zeitprüfung und serverseitige Grenzen dazu.

  • Schauen Sie sich die durchgekommenen Nachrichten an: Sind es Menschen, Bots oder KI-Texte? Gegen Bots helfen strengere Rate-Limits oder ein Proof-of-Work-Captcha, gegen Menschen nur Inhaltsfilter und eine Prüfung vor der Weiterleitung. Ein externer Spamfilter für den Inhalt ist der letzte Schritt, weil dabei Anfragen an einen weiteren Dienst gehen.

Formulare, die ankommen

Wir bauen Kontaktformulare mit Honeypot, Zeitprüfung und Rate-Limits als Standard, ohne Dienste, die eine Einwilligung brauchen.

Zu unseren Webseiten

Nachweise

Quellen und Stand

Geprüft am 02.11.2026: Funktionen laut Dokumentation von Statamic, Laravel, Spatie und Google. Die Einordnung zu Captchas und § 25 TDDDG beschreibt den Stand der Diskussion und ersetzt keine Rechtsberatung; für Ihren konkreten Fall fragen Sie einen Anwalt.