Benutzbarkeit bis Benutzerfreundlichkeit

Spamschutz ohne CAPTCHA?

Es gibt Methoden und Möglichkeiten ohne CAPTCHA einen Spamschutz für Kontaktformulare zu errichten, allerdings geht bei der Frage eher um barrierefreies, datenschutzkonformes CAPTCHA und nicht ohne CAPTCHA.

meteoguard Form-Spam-Protection | Desktop © echonet communication

Ende des Rätselratens & Abippens

Wer nach "Spamschutz ohne CAPTCHA" sucht, ist üblicherweise mit der Frage beschäftigt, wie man Formulare so gestalten kann, dass Sie für Personen weniger mühsam anwendbar sind, also grundsätzlich ein Usability-Thema aus dem Fachgebiet "Benutzerfreundlichkeit". Jetzt gibt es zwei verschiedene Herangehensweisen an solche CAPTCHA-Systeme um diese Probleme zu lösen.

Zielsetzung ist letztlich nur, dass nicht Bots auf die Formulare losgehen und diese zu tausenden mit Anfragen fluten können. Dieses Ziel versucht man auf verschiedene Weisen zu erreichen. Es gibt einfache Möglichkeiten, die aber inzwischen von vielen Bots bereits ausgehebelt werden und daher ihre Wirksamkeit langsam verlieren.

Formular-Spamschutz ganz ohne CAPTCHA

Streng genommen gibt es das nicht - denn CAPTCHA ist quasi nur eine "Vorgehensweise" um eben vor Bot-Traffic zu schützen. Die Frage ist daher nicht, ob man es ohne CAPTCHA macht, sondern ob das CAPTCHA-System für die Menschen vor dem Bildschirm mühsam ist.

Simple, aber längst ausgehebelte Methoden

Die Methoden, die für einen Spamschutz ohne CAPTCHA angewandt werden, sind oft mit Security-Tokens versehen, es wird also spezifisch ein Token gesetzt, der auch in der Datenbank mit einem Zeitstempel erfasst ist und der nach dem Absenden verglichen wird. Beispielsweise wäre eine simple Lösung einen Hash-Wert zu errechnen, diesen im Formular einzufügen und mit einem Timestamp in der Datenbank abzulegen.

Beispielhafte Datenbank für Tokens
IP TimeStamp Token
10.10.128.128 1747032119 6vhzhy7ajf0wp7fs
119.44.38.10 1747032226 ye0sms08sxn3rbvu

So etwa könnte das aussehen in der Datenbank. Und letztlich macht man nichts anderes, als im Formular in den Quellcode den errechneten Token als Hidden-Field einzufügen und danach dann zu prüfen.

Beim Öffnen des Formulares...

Wird das Formular geöffnet, ermittelt man einen Zufallswert (Token) und trägt den Token und die IP-Adresse des Users gemeinsam mit dem aktuellen UNIX-Timestamp in die Datenbank ein. Außerdem wird der Token im Formular eingetragen:

<input type="hidden" name="token" value="6vhzhy7ajf0wp7fs" />

Nach dem Absenden des Formulares...

Wird das Formular abgeschickt, so wird - bevor ein Datenbankeintrag oder ein Mail ausgelöst wird, wieder geprüft. Die IP-Adresse des Users und auch der mitgeschickte Token im versteckten Formularfeld werden in der Datenbank gesucht. Hervorgeholt wird dann der Timestamp, der den Zeitpunkt markiert zu dem das Formular geöffnet wurde.

Nun kann man versuchen zu experimentieren. Der TimeStamp ist eine Variable (UNIX-Timestamp), die die Sekunden seit 1.1.1970 angibt. Ist der aktuelle Wert für einen TimeStamp nicht mindestens um 3 höher als der gespeicherte TimeStamp, dann war das Formular weniger als 3 Sekunden geöffnet. Daraus könnte man schließen, dass ein Formular mit 5 Feldern wohl nicht von einem echten Menschen in weniger als 3 Sekunden abgearbeitet werden konnte.

Entscheidung: Man gibt statt ein Mail zu schicken oder einen Datenbank-Eintrag zu machen eine Fehlermeldung aus.

Problem der Methode

Diesen Trick haben inzwischen viele Bot-Programmierende natürlich gelöst und lassen Formulare gerne einfach fiktiv 10 Sekunden offen und schicken erst dann ab. Für den Bot stellt das keine Herausforderung dar, er kann ja trotzdem beliebig viele Browser-Instanzen starten und das Formular öffnen und pro Instanz dann einfach 10 Sekunden warten.

Methoden, wie diese hier von uns gezeigte, gibt es inzwischen viele. Auch der sogenannte Honeypot, also der Honigtopf, gehört dazu. Ein Feld, das leer bleiben muß und von Bots aber oft ausgefüllt wird, weil sie einfach alle Felder ausfüllen - wodurch klar wird, dass ein Feld mit <label for="honeypot">Nicht ausfüllen</label> <input type="hidden" id="honeypot">. Aber auch das haben Bot-Programmierende inzwischen erkannt...

Formular-Spamschutz ohne CAPTCHA-Mühen...

Eigentlich geht es beim Spamschutz für Formulare ohne CAPTCHA aber nicht darum, was wir oben beschrieben haben. Es geht darum, dass die CAPTCHA-Mühen wegfallen, das Abtippen von computergenerierten möglichst unlesbaren Texten soll genauso vermieden werden, wie das typische bekannte Suchen nach Zebrastreifen, Motorrädern, Bussen, Ampeln...

Lösung: CAPTCHA nach Marktwirtschaft-Kriterien

Daher gibt es andere Lösungen: Und die funktionieren nach simplen marktwirtschaftlichen Kriterien. Die Idee dahinter ist: Wenn E-Mail nicht gratis wäre, sondern der Versand einer E-Mail jedes Mal 5 Cent kosten würde, dann gäbe es praktisch keinen Spam mehr, weil sich das nicht mehr rechnen würde.

Leider kann man aber von den Personen, die auf der Webseite unterwegs sind, nicht ernsthaft verlangen für die Nutzung des Kontaktformulares eine Gebühr zu entrichten, oder?

Nun, so einen ähnlichen Gedanken kann man sehr wohl anwenden: Was kostet einem Bot, der versucht tausende oder millionen von Formularen abzuschicken um Spam zu verbreiten, wirklich Geld? Die Antwort ist Rechenleistung / CPU-Kapazität.

Auf dieser Idee setzt meteoguard an: Ohne, dass die menschliche Person vor dem Bildschirm einen unlesbaren Text abtippen oder Bilder nach Fahrrädern durchsuchen muß, wird CPU-Leistung angefordert in dem eine kryptographische Aufgabe für das Formular gelöst werden muß. Für einen einzelnen Menschen vor dem PC ist das keine grobe Problematik, es dauert eben 1 - 2 Sekunden, bis das Formular abgeschickt ist. Für einen Bot rechnet sich das Investment einer solchen Rechenleistung aber nicht mehr.

Der Spamschutz meteoguard für Formulare ohne CAPTCHA-Mühe, aber natürlich trotzdem mit CAPTCHA kann ab 7 Euro pro Monat eingerichtet werden. Auf der Seite finden Sie auch ein kurzes Produktvideo (1 Minute), in dem Sie sehen können, wie der Spamschutz für Formulare ohen CAPTCHA-Mühe tatsächlich für die User abläuft.

CAPTCHA ohne Mühe

Gehe zur Übersicht