Gravity Forms: Anti-Spam-Maßnahmen für Formulare

Gravity Forms Antispam

Standardmäßig bietet das WordPress-Formular-Plugin Gravity Forms zwei Funktionen zur Abwehr von Spam-Einträgen an: Google’s reCAPTCHA und einen Honeypot. Das Tool der Datenkrake ist zwar effektiv aber aus Datenschutzsicht umstritten und der Honeypot ist für Spambots leider keine große Hürde. Wer also seine Formulare effektiv gegen automatisierte Spam-Einträge absichern will, muss weitere Maßnahmen ergreifen. Im Folgenden stelle ich zwei einfache Möglichkeiten vor, die sich bei meinen Formularen bisher als sehr effizient erwiesen haben.

Mehrseitige Formulare

Die wohl einfachste Möglichkeit ohne jegliche Code-Anpassungen oder zusätzliche Tools ist, ein Formular einfach auf zwei oder mehr Seiten zu verteilen (in Engl.: Multi-Page / Multi-Step-Forms). Spambots sind anscheindend noch nicht in der Lage, sich durch mehrseitige Formulare zu klicken und diese abzusenden. Sie rufen üblicherweise die erste Seite auf und lösen die Submit-Aktion aus. Diese führt bei mehrseitigen Formularen jedoch nur auf die zweite Seite und es werden noch keine Daten zum Server gesendet.

Um ein mehrseitiges Formular in Gravity Forms zu erstellen, verwendet man das Standardfeld „Seite“, einmal am Anfang und dann immer dort, wo ein Seitenumbruch entstehen soll.

Gravity Forms Editor Seiten

Ein Formular kann dann z.B. so aussehen:

Gravity Forms Multi-Page

Ein Beispiel: https://pabstwp.de/kontakt/

Tipp: Mehrseitige Formulare können übrigens auch sinnvoll sein, um die User Experience und die Conversion Rate zu verbessern. Interessanten Lesestoff zu dem Thema gibt es hier:
https://www.gravityforms.com/multi-page-form-gravity-forms/
https://blog.hubspot.com/marketing/multi-step-forms

Validierung eines zusätzlichen Feldes

Wenn ein mehrseitiges Formular ungeeignet ist, z.B. weil es zu wenig Felder hat, gibt es noch eine weitere Möglichkeit. Mit dem Gravity Forms Filter gform_field_validation kann man überprüfen, ob ein Feld einen bestimmten Wert hat. Definiert man dieses Feld als Pflichtfeld, kann man somit die Absendung des Formulars verhindern, solange nicht der richtige Wert eingetragen ist. Klingt simpel, funktioniert derzeit aber tatsächlich, um automatisierte Spam-Einträge abzuwehren.

Ein Beispiel:

Im Formulareditor legt man ein Feld vom Typ „Einzeiliger Text“ an. Der Titel kann „Spam-Schutz“ lauten und in der Beschreibung erfasst man eine einfache Aufgabe in Textform. Diese kann z.B. lauten: „Wie viel ist vier plus fünf?“. Dann muss noch das Häkchen bei „erforderlich“ gesetzt werden.

Gravity Forms Editor

Um dieses Feld beim Absenden des Formulars zu überprüfen, benötigt man eine Filterfunktion, die man am besten in der functions.php erfasst (oder wo auch immer eigene Code-Schnipsel hinterlegt sind). Ich verwende hier den Filter gform_field_validation (Link zur Dokumentation). Zwei Dinge sind zu beachten: es ist das gewünschte Ergebnis der Aufgabe zu hinterlegen (in meinem Fall die Zahl 9) und im Hook-Name müssen die richtige Form ID und Field ID angegeben werden.

So sieht die Funktion dann aus (Link zu Github Gist):


Das Ganze kann man dann natürlich noch ein bisschen mit CSS stylen und dann sieht es etwa so aus:

Formular mit Antispam-Feld

Wenn das Feld leer bleibt oder nicht mit der Zahl 9 ausgefüllt wird, lässt sich das Formular nicht absenden. Die Wahrscheinlichkeit, dass ein Spambot genau diese Zahl einträgt, ist sehr gering. Bei Bedarf kann man natürlich die Aufgabe und den gewünschten Wert auch komplexer gestalten.


Kennt ihr noch weitere datenschutzfreundliche Maßnahmen, um eure Formulare mit Gravity Forms vor automatisiertem Spam zu schützen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit * markiert.

Bitte verwende Pastie, Pastebin oder Gist, um größere Code-Schnipsel in deinem Kommentar zu veröffentlichen.

*

3 Kommentare

  1. Nachdem Google mein Google’s reCAPTCHA nicht mehr gefiel und ich den Fehler nicht finden konnte, habe ich es gelöscht. Seitdem habe ich kein Antispam Tool mehr im Einsatz. Was soll sagen, null Differenz! Ich habe nicht mehr, eher weniger Spam zu verzeichnen, deshalb lasse ich es so wie es ist.

  2. Ja, das sind beides sehr gute Ideen, um mit Gravity Forms Boardmitteln voranzukommen.

    Es gibt allerdings noch eine dritte Variante, ebenfalls nur mit Gravity Forms Boardmitteln:
    Conditional Logic verwenden, und damit eine simple Frage erstellen und mind. 1 falsche Antwort dazu – gehen auch mehr.
    Die Frage bei mir lautet dann immer: „Was die Farbe einer Orange?“ – die Antwort ist ja eindeutig und daher passt das immer… 😉 Das Formular kann nur abgesendet werden bei richtiger Antwort, logo.

    Ich nutze das seit über 9 Jahren so und habe nicht einen Spam damit erhalten. Man kann das ganze noch mit Recaptcha verbinden, d.h. bei falscher Antwort wird noch ein Captcha geladen… und sicher gibt es noch mehr kreativere Ideen.

    Alle Nutzer kamen damit klar bisher, keiner hat sich jemals beschwert, auch internationale Nutzer kamen super zurecht (alles deutsch formuliert bei mir).

    Die Lösung erspart Custom Code und kann auch von „Noobs“ erstellt werden – und alles ist der Export-/ Importdatei des Formulars enthalten.