Einfacher WordPress Spamschutz für Contact Form 7 ohne reCAPTCHA
Mit dem Plugin Contact Form 7 Honeypot kannst du einen einfachen WordPress Spamschutz für Contact Form 7 nachrüsten und deine Formulare vor Spambots schützen – ohne nervige Captchas oder externem Laden von JavaScript durch Google’s reCAPTCHA Funktion.
Seit Anbeginn meiner Zeit mit WordPress nutze ich schon Contact Form 7 zur Erstellung von Formularen. Das Plugin hat stets gute Dienste verrichtet und da ich ingesamt nur ein einziges Kontaktformular auf meinem Theme Shop im Einsatz habe, war ein Wechsel zu Gravity Forms oder einem anderen Formular-Plugin für mich nie notwendig.
Spamabwehr für WordPress Formulare
Geändert haben sich im Laufe der Jahre aber die Anti-Spam-Maßnahmen. Ganz am Anfang hatte Contact Form 7 keinen eigenen Spamschutz, es gab aber mehrere Zusatz-Add-ons wie z.B. Really Simple CAPTCHA, um das Plugin mit klassischen Captchas zur Spamabwehr auszustatten.
Die ursprünglichen Captchas waren aus Sicht der Usability und Accessibility schrecklich. Meistens musste der Nutzer bestimmte Buchstabenketten erkennen, welche durch verzerrte Texte und Hintergrundmuster möglichst schwer zu lesen waren.
Abhilfe schaffte erst Google’s reCAPTCHA v2, mit dem in den meisten Fällen nur noch eine einfache Checkbox bestätigt werden musste, welche für Spambots aber ein Problem darstellte. Später trat mit Invisible reCaptcha das Captcha sogar vollständig in den Hintergrund.
Contact Form 7 integrierte reCAPTCHA mit Version 4.3, sodass keine zusätzlichen Plugins mehr benötigt wurden. Aufgrund der komfortablen Implementierung und verbesserten Usability hatte ich das Verfahren lange Jahre als Spamabwehr im Einsatz.
Google reCAPTCHA und der Datenschutz
Aufgrund der DSGVO rückt der Datenschutz momentan wieder stärker in den Fokus. Da mir der Schutz der persönlichen Daten meiner Besucher und Kunden durchaus wichtig ist, versuche ich, meine Websites Schritt-für-Schritt zu verbessern, erst einmal unabhängig davon, ob es für die DSGVO auch rechtlich erforderlich ist.
Getreu dem Motto der Datensparsamkeit halte ich es aber für sinnvoll, alternative Lösungen zu nutzen, wenn diese zur Verfügung stehen. Vor Kurzem habe ich ja bereits schon Google Fonts aus allen meinen Themes entfernt. Alle Schriftarten werden nun lokal eingebunden und nicht mehr extern von Google’s Font API geladen.
Google’s reCAPTCHA ist im Grunde das Gleiche. Statt Fonts wird etwas JavaScript von Google’s Servern geladen, welches für den Spamschutz des Formulars zuständig ist. Auch hier erhält Google die IP-Adressen von Website-Besuchern.
Es war deshalb Zeit, auf eine alternative Lösung umzustellen.
Contact Form 7 Honeypot
Contact Form 7 Honeypot ist eine einfache Erweiterung für CF7, welche das Plugin mit einer Anti-Spam-Funktionalität nachrüstet. Das Add-on steht im offiziellen WordPress-Plugin-Verzeichnis zum Download bereit und ist auf über 200.000 Websites aktiv.
Für mich war es zum einen wichtig, eine Lösung ohne komplizierte Captchas zu finden, welche aus Usability-Sicht nur ein Rückschritt von reCAPTCHA gewesen wären. Zum anderen muss der Spamschutz natürlich auch zuverlässig funktionieren und möglichst alle Spambots abwehren.
Funktionsweise von Honeypot
Die Spamabwehr mit Honeypot klang daher nach der idealen Lösung. Die Plugin-Beschreibung auf WordPress.org liefert eine sehr schöne Erklärung der Funktionsweise, welche ich deshalb an dieser Stelle nur zitieren möchte:
Das Prinzip eines Honeypot ist einfach – Bots sind dumm. Während mancher Spam von Hand erzeugt wird, kommt die grosse Mehrheit von Bots, die auf eine spezielle (grossflächige) Art geschrieben sind um Spam über die meisten bekannten Formular-Typen zu versenden. Auf diese Art füllen sie blind Felder aus, unabhängig davon ob sie zwingend sind oder nicht. So fängt ein Honeypot den Bot – er führt ein zusätzliche Feld ein, das das Formular ungültig macht, wenn es ausgefüllt ist.
Quelle: WordPress.org
WordPress Spamschutz für Contact Form 7 konfigurieren
Das Plugin funktioniert sehr einfach.
Nach der Installation steht in Contact Form 7 ein neuer Button bereit, um ein Honeypot-Feld einzufügen. Im Frontend wird das Feld mit CSS ausgeblendet. Spambots tappen in die Falle und füllen das Feld fälschlicherweise aus, wodurch der Bot erkannt und die Anfrage verworfen wird.
Bei der Generierung des Honeypot-Felds wird empfohlen, eine andere Bezeichnung als den standardmäßigen Namen „honeypot“ zu verwenden, um Bots das Erkennen der Falle zu erschweren. Ein typischer Text wie E-Mail, Vorname oder Website ist besser.
Im Support-Forum des Plugins wird unter anderem auch empfohlen, notfalls einfach zwei Honeypot-Felder einzubauen, um den Bots das Leben noch schwerer zu machen.
Wie zuverlässig schützt das Plugin vor Spam?
Im Endeffekt arbeitet Contact Form 7 Honeypot nur mit Hidden Fields. Das Plugin verspricht daher erst gar nicht, wirklich jeden Spam abhalten zu können. Google’s reCAPTCHA Verfahren wird bei sehr intelligenten Spambots wahrscheinlich einen noch besseren Schutz bieten.
Für meine eigene Website scheint der Schutzlevel aber ausreichend zu sein. Während ohne Spamschutz recht schnell der erste Spam eintrudelt, hat die Umstellung auf Honeypot zu keinem erhöhten Spam-Aufkommen geführt. Zumindest bist jetzt nicht 🙂
Spambots passen sich ständig an und womöglich funktioniert das Plugin nicht auf ewig. Bis dahin ist es jedoch eine sehr gute Alternative zu Captchas.
Hallo, mit welchem Plugin hast du die Datenschutzerklärung einblenden lassen? Möchte auch so eine Einblendung haben. Viele Grüße
Hallo AxL,
Die Cookie Notice habe ich mit dem inzwischen veralteten Plugin Simple Cookie Notification Bar eingeblendet: https://wordpress.org/plugins/simple-cookie-notification-bar/
Es gibt daher wahrscheinlich schon neuere / bessere Lösungen dafür.
Grundsätzlich hat das Plugin nur den Hinweis gegeben, dass Cookies genutzt werden. Ich habe aber just vor wenigen Stunden auf ein neues Plugin umgestellt, welches ein Opt-In des Trackings ermöglicht und damit für die DSGVO besser ist.
Ist ein Premium Plugin und unter https://soulsites.de/facebook-pixel-plugin-wordpress-opt-out-dsgvo/ verfügbar. Momentan bin ich noch nicht ganz damit zufrieden, aber das war bis jetzt die beste Lösung.
Viele Grüße,
Thomas
Sehr hilfreich, danke! 🙂
Sehr gerne 🙂
Hallo Thomas,
vielen Dank für deinen Beitrag. Was hältst du aber von dem Stop Spammers Plugin
https://de.wordpress.org/plugins/stop-spammer-registrations-plugin
und dem danhinterstehenden Projekt stopforumspam.com?
Hallo Christian,
Ich kenne das Plugin leider nicht, kann also nichts dazu sagen. Mit der Beschreibung auf WordPress.org ist auch nicht ersichtlich, ob es auch Spamschutz für Contact Form 7 bietet.
Ich nutze grundsätzlich lieber Plugins, welche auf einen Zweck spezialisiert sind. Für Kommentar-Spam ist beispielsweise noch Antispam Bee hier im Blog im Einsatz: https://de.wordpress.org/plugins/antispam-bee/
Viele Grüße,
Thomas
Vielen Dank für deine Antwort. Also eine umfassendere Information der Funktions- und Wirkungsweise von StopSpammers unter stopforumspam.com gibt es ja nun fast nirgendwo.
Tritt bei Antispam Bee nicht das DSVGO-Problem auf und ist schon von Anfang an als eher problematisch einzustufen gewesen?
https://simon.blog/2018/euer-datenschutz-kotzt-mich-an/
Okay, noch mal von vorne, bevor wir hier Dinge durcheinander bringen.
stopforumspam.com ist eine öffentliche Spam-Datenbank, in der bekannter Spam gemeldet und gesammelt wird. Plugins können dann zur Erkennung von Spam diese Datenbank nutzen und z.B. Kommentare oder Formulareingaben abgleichen.
Im Bezug auf den Datenschutz ist die Nutzung einer externen Spam-Datenbank aber problematisch. Es werden nämlich meistens die IP-Adressen (personenbezogene Daten) der Kommentare / Formulare zur Überprüfung dorthin übermittelt. Das bekannte Plugin Akismet hat das gleiche Problem, auch hier werden die Daten an externe Server in den USA weitergegeben.
Antispam Bee hatte eine Einstellung, um den IP-Abgleich mit der öffentlichen Spam-Datenbank zu aktivieren. Im Hintergrund wurde dafür tatsächlich auch stopforumspam.com genutzt. Bei der Option wurde aber schon immer auf den Datenschutz hingewiesen und standardmäßig war sie deaktiviert.
Mit der neuen Version 2.8 von Antispam Bee wurde die Einstellung komplett entfernt, sodass auch keine Fehlkonfiguration mehr möglich ist und die Option aus Versehen aktiviert wurde. Siehe den Changelog unter https://wordpress.org/plugins/antispam-bee/#developers
Alle anderen Funktionen in Antispam Bee waren datenschutzrechtlich nie ein Problem, wie auch Simon in dem verlinkten Beitrag von dir erklärt.
Antispam Bee 2.8 ist mit Entfernung der öffentlichen Spam-Datenbank nun komplett konform mit der DSGVO.
Falls das Plugin Stop Spammers weiterhin die öffentliche Datenbank nutzt, ist es wahrscheinlich nicht 100% konform mit der DSGVO. Hier sollte also eventuell ein Wechsel zu einem anderen Plugin vorgenommen werden.
Viele Grüße,
Thomas
Hallo Thomas,
super, vielen Dank. Das ist ein sehr guter Hinweis. 😉
Viele Grüße sendet dir,
Sehr gerne 🙂
Ich hab es vor Wochen probiert, weil ich über CF7 von russischen Spammern jeden Tag mehrere Mails bekam. Doch Honeypot hat da nichts bewirkt, es kamen genauso viele Spammails wie zuvor. Schade. Ich CF7 dann durch eine simple Angabe meiner E-Mail ersetzt und bekomme jetzt keinen Spam mehr.
Hallo Adrian,
Vielen Dank für dein Feedback.
Die Antispam-Felder werden bestimmt von einigen Spambots erkannt. Eventuell hilft aber wirklich ein zweites Honeypot-Feld und die Umbenennung der Felder mit gängigen Bezeichnungen.
Ansonsten helfen tatsächlich nur stärkere Maßnahmen wie Captchas oder eventuell der Verzicht auf ein Kontaktformular.
Viele Grüße,
Thomas
Vielen Dank für den sehr informativen Artikel.
Ich habe jetzt zwei Honeypot-Felder und bin gespannt, wie es funktioniert.
Sehr gerne 🙂
Das Erkennen von den Honeypotfeldern ist doch relativ einfach. Der Bot muss nur den CSS Style mitauslesen und erkennt, dass er nichts bei „visibility:hidden“ eingeben muss. Fände es schaden, wenn ich für Akismet wirklich $60 im Monat ausgeben muss. Es scheint aber keine Alternative zu geben, die auch mit CF7 funktioniert.