Spamschutz für Formulare: Honeypot statt Captcha

Fast jede Webseite besitzt Web-Formulare. Meistens sind es Kontaktformulare, welche nur Mails versenden. Häufig werden aber auch Formulare für Registrierung, Bestellung, Gästebuch usw. verwendet, welche nicht nur Mails versenden, sondern auch noch Einträge in der Datenbank machen.

Irgendwann wird man plötzlich mit Mails von der eigenen Webseite überschüttet. Es sind Spam-Mails welche über irgendein Formular der Webseite (z. B. Kontaktformular) versendet werden. Dagegen gibt es verschiedene Mittel. Am besten: Die Honigfalle!

CAPTCHA Codes

Oft sieht man auf anderen Webseiten unterhalb der Formulare einen sog. CAPTCHA-Code, den man von einem Bild ablesen und eintippen muss. Diese Spamschutz-Maßnahme wird häufig verwendet und bietet auch einen einigermaßen guten Schutz. (Obwohl es manche Spamprogramme auch schaffen, die Zeichen aus dem Bild auszulesen)

Nachteile der CAPTCHA Codes: Es ist einfach lästig, immer diesen Code eingeben zu müssen. Außerdem ist der Code manchmal schlecht zu lesen. Diese Methode gilt daher nicht als „barrierefrei“.

Es gibt noch eine ähnliche Methode mit Rechenaufgaben, aber auch diese werden von den Spambots teilweise schon gelöst und der Benutzer ist auch hier gezwungen eine zusätzliche, lästige Eingabe zu machen, selbst wenn es nur ein Zeichen ist.

Deshalb möchte ich eine andere, einfache und sehr elegante Methode vorstellen, die schon seit längerem bekannt ist und auch erfolgreich angewendet wird.

Honeypot Methode

Die Methode heißt „Honeypot“ (Honigtopf) und ist sozusagen eine süße, verlockende Falle für die Spambots.

Diese haben nämlich die Angewohnheit, alle Eingabefelder auszufüllen, die sie finden können.
Die Spambots können da einfach nicht widerstehen.

Beispiel: Kontaktformular mit Honeypot Spamschutz

Der Trick geht wie folgt:
Man erstellt einfach ein zusätzliches Eingabefeld mit dem Hinweis, dass dieses Feld leer bleiben soll, da es eine Spamschutz-Maßnahme ist.

Besucher der Webseite wissen dann Bescheid und es ist bequemer ein Feld einfach leer zu lassen, statt einen Code aus einem Bild zu entziffern und einzutippen.

Dieses zusätzliche Feld kann man mit CSS auch unsichtbar machen (Display: none;), sodass die Besucher nichts davon mitbekommen.

Die Spambots aber tappen prompt in die Falle und füllen das Feld aus (auch wenn es unsichtbar ist).

Nun wird in der Programmierung (PHP) noch die Bedingung eingesetzt, dass das Formular erst verarbeitet wird, wenn dieses Feld leer ist. Und schon hat man einen einfachen, sehr effektiven und barrierefreien Spamschutz. Der Honigfalle sei Dank!

Für Programmierer sollte es selbstverständlich sein, dass darüber hinaus sämtliche Eingabevariablen (POST und GET) immer vor der Weiterverarbeitung gefiltert und geprüft werden müssen, um Spam oder SQL-Injection (Manipulation der Datenbank) zu vermeiden. Dazu gibt es in PHP zahlreiche Funktionen.