Spamschutz für Kontaktformulare: so stoppst du Spambots
Prüfe jede Einsendung auf deinem Server, denn ein Spambot kann alles überspringen, was nur im Browser läuft. Lass jede Einsendung ein paar Prüfungen durchlaufen, die Besucher nie sehen: ein verstecktes Honeypot-Feld, ein Rate Limit pro IP-Adresse und ein unsichtbares CAPTCHA, das jede Einsendung Rechenzeit kosten lässt und bewertet, wie automatisiert sie wirkt. Bei einem typischen Kontaktformular wird Bot-Spam damit selten, ganz ohne Rätsel, und was dann noch durchkommt, ist meist Spam, den Menschen von Hand tippen.
| Schicht | Was sie stoppt | Was durchkommt |
|---|---|---|
| Honeypot-Feld | Bots, die jedes gefundene Feld ausfüllen | Bots, die die Seite rendern oder für dein Formular geschrieben wurden |
| Rate Limit | Fluten von einer IP-Adresse | Bots, die sich über viele IP-Adressen verteilen |
| Unsichtbares CAPTCHA | Bots in der Masse und automatisierte Browser | Ein Mensch, der Spam von Hand tippt |
| Feld- und Zeitprüfungen | Links im Namensfeld, kaputte E-Mail-Adressen, Formulare, die im Moment des Seitenaufrufs abgeschickt werden | Spam, der sauber formatiert und geduldig ist |
| Inhaltsfilter oder Moderation | Verkaufsangebote und Link-Spam, von Hand getippt | Manche echte Nachricht, wenn der Filter streng ist |
Guter Spamschutz für Formulare ist ein Stapel aus diesen Schichten, denn keine reicht allein und keine ist teuer. Der Rest dieser Seite erklärt, woher Formular-Spam kommt und wie du jede Schicht einrichtest.
Woher Formular-Spam kommt
Der meiste Spam, der in einem Kontaktformular landet, kommt von Bots, und wer sie betreibt, interessiert sich nicht für deine Website im Besonderen. Gesucht ist jedes offene Formular, das eine Nachricht an einen Menschen zustellt, am liebsten mit einem Link darin.
Bots, die das Formular direkt abschicken
Der billigste Spambot öffnet deine Seite nie in einem Browser. Er liest das HTML einmal, merkt sich die Feldnamen und die Adresse, an die das Formular sendet, und schickt von da an seine Daten direkt dorthin, so oft er kann. Weil er die Seite überspringt, überspringt er auch jedes Skript darauf. Eine Prüfung, die nur im Browser läuft, etwa JavaScript, das das E-Mail-Feld kontrolliert, läuft schlicht nie.
Bots mit echtem Browser
Die nächste Stufe lädt die Seite in einem Headless-Browser, führt ihre Skripte aus und füllt die sichtbaren Felder so aus, wie ein Besucher es tun würde. Diese Bots kommen an vielen einfachen Tricks vorbei, auch an den meisten Honeypot-Feldern, weil sie die Seite so sehen wie ein Mensch. Sie sind langsamer und teurer im Betrieb, und genau diese Kosten treibt Proof-of-Work in die Höhe.
Spam, den Menschen tippen
Ein Teil des Formular-Spams wird von Hand getippt: Linkbuilder, Angebote für einen “kostenlosen SEO-Check”, Leute, die pro Einsendung bezahlt werden. Keine Bot-Prüfung stoppt einen Menschen, und kein ehrlicher CAPTCHA-Anbieter behauptet etwas anderes. Für diesen Teil brauchst du einen Inhaltsfilter oder jemanden, der das Postfach liest.
Warum Formular-Spam mehr kostet als Platz im Postfach
Ein Kontaktpostfach voller Spam nervt. Die weniger sichtbaren Kosten sind schlimmer. Echte Anfragen gehen zwischen gefälschten unter, und wer sie beantwortet, gewöhnt sich ans Überfliegen. Genau dann geht ein echter Kunde verloren. Spam, der weiter in dein CRM oder deine Newsletter-Liste fließt, verfälscht die Daten, mit denen der Vertrieb arbeitet, und die Links darin erreichen genau die Person, deren Job es ist, Nachrichten von Fremden zu öffnen.
Achte auch auf deine Bestätigungs-E-Mails. Schickt das Formular dem Besucher eine Kopie seiner Nachricht, kann ein Bot eine fremde Adresse ins E-Mail-Feld und seinen Spam in die Nachricht schreiben, und dein Mailserver stellt diesen Spam unter deiner Domain zu. Nach genug Beschwerden landen deine eigenen E-Mails im Spamordner. Lass den Nachrichtentext aus Bestätigungs-E-Mails weg und verschicke sie erst, wenn eine Einsendung deine Prüfungen bestanden hat.
Spamschutz für Formulare, Schicht für Schicht
Guter Spamschutz für Formulare besteht aus günstigen Prüfungen. Jede Schicht unten läuft auf deinem Server, ungefähr in der gezeigten Reihenfolge.
Rate Limits
Ein Rate Limit begrenzt, wie viele Einsendungen eine IP-Adresse in einer bestimmten Zeit schicken kann. Ein Kontaktformular braucht selten mehr als ein paar pro Stunde von derselben Adresse, das Limit darf also eng sein, ohne dass es jemand merkt. Die meisten Webserver und Frameworks bringen eines mit.
Zwei Dinge solltest du bedenken. Bots, die durch viele IP-Adressen rotieren, was Residential-Proxy-Netze billig machen, bleiben unter jedem Limit pro IP. Und ganze Büros und Mobilfunknetze teilen sich oft eine Adresse, ein zu enges Limit blockiert also stattdessen echte Menschen.
Honeypot-Feld
Ein Honeypot ist ein zusätzliches Feld, das du per CSS vor Menschen versteckst. Ein Bot, der jedes Feld ausfüllt, füllt auch dieses aus, und dein Server verwirft die Einsendung. Das kostet nichts und fängt erstaunlich viel Spam von Bots ab, die direkt senden. Unser Artikel zum Honeypot-CAPTCHA zeigt die Einrichtung im Detail.
Verstecke das Feld auch vor Hilfstechnologien (aria-hidden="true" und tabindex="-1") und schalte Autofill dafür ab (autocomplete="off"). Sonst füllt es ein Screenreader-Nutzer oder das Autofill des Browsers aus, und eine echte Nachricht verschwindet, ohne dass es jemand merkt. Bots, die die Seite rendern und prüfen, was sichtbar ist, lassen das Feld aus.
Unsichtbares CAPTCHA: Proof-of-Work und Bot-Score
Diese Schicht ist für Bots da, die sich wie Besucher verhalten. Ein unsichtbares CAPTCHA läuft im Hintergrund, während der Besucher das Formular ausfüllt. Bei Proof-of-Work löst der Browser eine kleine Rechenaufgabe, bevor das Formular abgeschickt wird: ein Moment für einen Besucher, echte Hardware und Zeit für einen Bot, der hunderttausend Einsendungen verschicken will. Ein Bot-Score bewertet, wie automatisiert die Anfrage wirkt, anhand von Signalen wie dem Browser und der Art, wie die Seite benutzt wurde. Wie du einen Bot-Score liest, erklärt unser Leitfaden.
Das CAPTCHA gibt dem Browser ein Token, und dein Server muss dieses Token beim Anbieter prüfen, bevor er die Einsendung annimmt. Lässt du diesen Schritt weg, läuft ein Bot, der direkt sendet, einfach am CAPTCHA vorbei, weil er das Widget nie lädt.
Feld- und Zeitprüfungen
Dein Server weiß Dinge über eine Einsendung, die Bots oft falsch machen. Eine URL im Namensfeld, eine E-Mail-Adresse, deren Domain nicht existiert, eine Nachricht, die nur aus Links besteht. Ein Formular, das eine Sekunde nach dem Laden der Seite abgeschickt wird, hat kein Mensch ausgefüllt. Solche Einsendungen abzulehnen, kostet ein paar Zeilen Code. Halte die Regeln locker genug, dass ein Kunde mit ungewöhnlichem Namen oder kurzer Nachricht trotzdem durchkommt.
Inhaltsfilter und Moderation
Was übrig bleibt, ist meist Spam, den Menschen tippen, plus der gelegentliche gut gebaute Bot. Ein Inhaltsfilter bewertet den Text jeder Nachricht anhand von bekanntem Spam. Sprachmodelle haben diese Schicht geschwächt: Ein Verkaufsangebot, das eines davon geschrieben hat, liest sich wie eine echte Anfrage, und Keyword-Listen übersehen es. Nutze den Filter, um verdächtige Nachrichten in einen eigenen Ordner zu sortieren, nicht um sie zu löschen.
Formular-Spam stoppen ohne Rätsel
Bildraster und verzerrte Buchstaben sind der älteste Spamschutz für Formulare, und beim Kontaktformular sind sie ein schlechter Tausch. Wer dir eine Nachricht schicken will, ist genau die Person, von der du hören willst, und jeder zusätzliche Schritt ist ein Grund zu gehen. Rätsel schließen außerdem Besucher aus, die die Aufgabe nicht sehen oder hören können, und sie stoppen Bots nicht mehr zuverlässig, weil Bilderkennung und bezahlte Lösedienste durch die meisten kommen.
Einfache Spambots stoppst du ganz ohne CAPTCHA: Honeypot, Rate Limit und Feldprüfungen erledigen sie. Sobald Bots einen echten Browser nutzen, brauchst du Proof-of-Work oder einen Bot-Score, und genau das ergänzt ein unsichtbares CAPTCHA, ohne etwas zum Lösen zu zeigen. Unser Überblick über CAPTCHA-Alternativen vergleicht die Methoden, die das Rätsel ersetzen, und zeigt, wo jede scheitert.
Kontaktformular-Spam bei WordPress
WordPress-Websites bekommen mehr Formular-Spam als die meisten, weil Bots wissen, wo sie suchen müssen: dieselben Formular-Plugins mit denselben Feldnamen auf sehr vielen Websites. Das WordPress-CAPTCHA-Plugin von TrustCaptcha arbeitet mit Contact Form 7, Elementor Forms, WPForms, Gravity Forms, Ninja Forms, Fluent Forms und Forminator zusammen und schützt außerdem Kommentare, Login, Registrierung und den WooCommerce-Checkout. Das Plugin prüft das Ergebnis auf deinem Server, also wird auch ein Bot abgewiesen, der direkt an das Formular sendet. Für das häufigste Setup gibt es eine eigene Anleitung: Contact Form 7 CAPTCHA.
Registrierungsformulare ziehen eine andere Art von Bot an, eine, die Konten anlegt statt Nachrichten zu schicken. Unser Leitfaden dazu, wie du Fake-Accounts verhinderst, behandelt diesen Fall.
Wo TrustCaptcha ansetzt
TrustCaptcha ist das unsichtbare CAPTCHA in diesem Stapel und bringt einen eigenen Honeypot mit. Jeder Tarif enthält dynamisches Proof-of-Work, das mit dem Risiko einer Anfrage schwerer wird, sodass eine Bot-Flut teuer wird. Jedes Widget enthält außerdem mehrere versteckte Honeypot-Felder, die keine Einrichtung brauchen. Ab dem Tarif Solo bewertet die Bot-Erkennung jede Anfrage anhand von rund 35 Signalen, und du kannst eigene Proof-of-Work-Regeln sowie IP-Allowlists und -Blocklists anlegen. Besucher sehen ein kleines Widget, das sich selbst prüft; es gibt nichts zu klicken oder zu lösen. Wenn du gar kein sichtbares Widget willst, entfernt es das Add-on Captcha Branding.
Dein Server prüft das Ergebnis mit einem API-Aufruf. Standardmäßig kann er jedes Ergebnis nur einmal abrufen, ein Bot kann also kein gelöstes Token für einen Stapel Einsendungen wiederverwenden. TrustCaptcha setzt keine Cookies, verarbeitet Daten in EU-Rechenzentren und enthält für jeden Kunden einen Auftragsverarbeitungsvertrag (AVV). Rate Limits, Feldprüfungen und der gelegentliche Blick ins Postfach bleiben bei dir, und sie arbeiten gut damit zusammen.
TrustCaptcha testen
Jeder Tarif startet mit einer 14-tägigen kostenlosen Testphase, und nicht-kommerzielle Websites nutzen TrustCaptcha kostenlos mit 500 Verifizierungen im Monat. Starte deine kostenlose Testphase und setze es zuerst auf dein Kontaktformular, denn dort taucht der Spam meistens auf.
