Spam verhindern ohne Captchas
Spammer verbreiten seit Jahren Ihren Werbe- oder Datenmüll hoch automatisiert.
Mein Blog war in seiner ersten Version auch anfällig für sogenannte Spambots, die keine Probleme damit hatten Kommentare zu posten.
Als Reaktion baute ich eine Captcha Abfrage ein, also ein Bild was eine zufällige Folge von Zeichen darstellt, die ein Benutzer dann eingeben muß. Spambots versagen hier in der Regel wodurch der gewünschte Schutz vor Spam entsteht.
Nun ist diese Variante der Spamabwehr allerdings nutzerunfreundlich. Technisch gesehen ist es eine geringe Hürde, für sehschwache oder gar blinde Internetnutzer ist es allerdings unzumutbar und selbst erfahrene Internetnutzer springen oft genervt ab, wenn sie ein Captcha abtippen sollen, nur um ein Kommentar ab zu geben?!
Viel interessanter ist es, sich das Verhalten der Spambots genauer an zu schauen und aus diesem Verhalten Regeln zur Spamabwehr zu erstellen. Ich konnte einige Regeln erstellen, die jetzt dazu dienen meinen Blog von Spamkommentaren frei zu halten.
1. Bots brauchen nur wenige Sekunden um ein Formular ab zu senden. Eine natürliche Person benötigt mindestens 8 Sekunden um zum Kommentarfeld zu scrollen, einen Namen und ein Kommentar an zu geben (und dann wurde noch nichts gelesen was man kommentieren könnte).
2. Bots füllen meist alle Felder eines Formulars und senden diese an den Server. Selbst wenn diese eigentlich nicht für den Nutzer sichtbar sind.
3. Bots ändern keine Werte in vorbelegten Feldern, besonders nicht in hidden fields.
Aus diesen Verhaltensmustern lassen sich schon gute Regeln erstellen, die Bots ausschließen und normalen Nutzern nicht im Weg stehen.
1. Speichere den timestamp beim anschauen einer Seite und überprüfe beim absenden eines Kommentars ob der Nutzer mindestens x Sekunden von anschauen der Seite bis zum Kommentar gebraucht hat. Wenn es schneller ging, ist es vermutlich ein Spambot.
2. Baue Felder mit den namen "email" und "url" in Dein Formular ein, aber verstecke sie per CSS (Bsp: style="position:absolute; top:-1000px; left:-1000px;") und benenne typische Felder für E-Mail oder Namen anders. Werden die versteckten Felder gefüllt, obwohl ein Nutzer sie garnicht sehen kann, handelt es sich um einen Spambot.
3. Baue ein hidden field in Dein Formular, welches per Javascript aus dem DOM gelöscht wird. Das Formular ist dann nurnoch mit JavaScript nutzbar, Bots interpretieren allerdings kein Javascript und werden somit ausgeschlossen, weil sie das hiddenfeld mitsenden.
Man kann diese Liste sicherlich ausbauen, allerdings kann das auch zur Folge haben das Programmierer von Spambots und somit die Spambotsschlauer werden. In diesem Sinne soll dieser Artikel nur zu Anregung dienen andere Wege zur Spamabwehr zu verfolgen als Captchas. Es geht! Alleine die Zeitmessung von Seitenansicht bis Kommentar eliminiert 99.9% des Spams in meinem neuen Blog.
Kommentare
eins
zwei
drei
style="position:absolute; top:-1000px; left:-1000px; ist die typische Methode, um Inhalte vor sehenden Usern zu verstecken, sie aber blinden Menschen, die einen Screen Reader benutzen, dennoch zu zeigen.
Wenn du diese Methode wirklich benutzen willst, musst du blinden Seitenbenutzern zumindest Fnoch zusätzliche Hinweise geben, wie sie mit den jeweiligen Feldern umzugehen haben. Andernfalls klassifiziert deine Technik blinde und sehbehinderte Menschen als Spambots - was deine Absicht sicherlich nicht ist. ;-)
Stimmt, das habe ich nicht bedacht.