Spam verhindern ohne Captchas

Spammer verbreiten seit Jahren Ihren Werbe- oder Datenmüll hoch automatisiert.captchas

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.

Tim Wahrendorff
05.09.2011
< Invitation for hacking - Einladung zum hacken   Mein Gott, Steve!  >

Kommentare

#1 1. gute sache, zur transparenz für den (menschlichen) nutzer sollte allerdings auch ein hinweis vor dem send-button nicht fehlen. 2. dom-elemente per css nach links oben aus dem bild zu schieben ist aber reichlich unsauber. kannste auch display: none nehmen. wobei spambots ja auch die css-regeln lesen können und dann wahrscheinlich merken, dass an dem feld irgendwas faul ist. und wenn kein css verfügbar ist, sind die felder auch wieder da. 3. javascript für die nutzung des formulars vorauszusetzen ist auch nicht gerade die feine art. außerdem wirst du dich wundern, wieviel javascript spambots heutzutage beherrschen. gute bots können sogar flash filme reverse engineeren und so captchas lösen, oder sie über irgendwelche botnetze von ahnungslosen echten menschen lösen lassen.  eine ziemlich wirkungsvolle methode ist eine semantische abfrage. damit ist keine einfache matheaufgabe a la 6+5=? gemeint, denn dass kann ein spambot auch einfach rausparsen. bei exma haben wir jetzt eine trivialfrage eingebaut, die eine maschine nicht lösen kann, sofern sie nicht der deutschen sprache mächtig ist, auch wenn sie den html-text parst: welche farbe hat ein blaues viereck? wenn das ein spambot beantworten kann, dann ist er so gut programmiert, dass er wahrscheinlich auch sinnvolle kommentare unter deinen blogartikel postet und kann damit ruhigen gewissens das formular absenden :D
Gravatar mcnesium 09.09.2011 17:37
#2 Wobei mir auffällt, das anscheinend Zeilenumbrüche aus den Kommentaren entfernt werden... Das sollte eigentlich nicht so sein, was ich da wohl wieder für Blödsinn gemacht habe?
Gravatar Tim 12.09.2011 15:00
#3

eins

zwei
drei

  • test 
  •  test

 

Gravatar Tim 12.09.2011 16:05
#4

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. ;-)

Gravatar Fritz Weisshart 05.11.2011 15:14
#5

Stimmt, das habe ich nicht bedacht.

Gravatar Tim 05.11.2011 16:31

Kommentar schreiben

Gravatar Unterstützung

* benötigt


Die E-Mail Adresse wird versteckt und nur genutzt um Dein Gravatar an zu zeigen, wenn Du eins hast.