Kampf dem Spam

Was unterscheidet eine Maschine vom Menschen? Scheinbar ist die Antwort schnell gefunden: der Eine kann Gefühle empfinden, der Andere nicht, der Andere ist dumm der Eine… lassen wir das. Leider ist diese Frage, gerade wenn es darum geht Besucher einer Website von einem automatisierten Programm – einem Bot – zu unterscheiden, alles andere als leicht zu beantworten. Das wird einem spätestens dann leidlich bewusst, wenn man z.B. ein Kontaktformular oder Blog mit Kommentarfunktion ins Internet stellt. Früher oder später kommen E-Mails bzw. Kommentare herein, die so gar nicht zum Thema passen, wenn sie denn überhaupt sprachliche Inhalte und nicht nur unzählige Links und Kauderwelsch enthalten. Je populärer dabei das eingesetzte System (z.B. WordPress) desto mehr scheint man im Fokus der Spammer zu liegen. Es muss heutzutage Kinderleicht sein, Bots zu programmieren, die auf ihrem Streifzug durch das Netz sämtliche Formulare mit Links zu Glücksspielseiten und Blauen-Pillen-Händlern zupflastern. Es wäre wohl zu viel verlangt, würden diese Programme ihre Intention in die Browserkennung schreiben. Also müssen andere Möglichkeiten gefunden werden, um dem Spam Herr zu werden.

CAPTCHAS

Wer kann's lesen?

Die wohl zuverlässigste Methode um Spam-Bots zu behindern und echte Besucher auf lange Zeit zu vergraulen nennt sich CAPTCHA. Eine in eine Grafik eingebettete Zeichenfolge soll vom Benutzer erkannt und in ein Feld eingegeben werden. Der Vorteil dieser leider sehr verbreiteten Methode besteht lediglich darin, dass der Seitenbetreiber diesen Schutz sehr schnell in seine Seite integrieren kann. Aus der großen Popularität resultiert aber eben auch eine zunehmende Zahl an Programmen, die diese Bilder auf unterschiedlichen Wegen entschlüsseln oder umgehen können. Unnötig zu erwähnen, dass solche Lösungen nicht nur Barrieren aufbauen, sondern auch nerven. Nur wenig besser (aus Sicht der Zugänglichkeit) sind in Klartext formulierte Logikfragen oder Rechenaufgaben, deren Antwort in ein Feld geschrieben wird. (»Warum muss ich hier eingeben, wieviel Beine ein vierbeiniger Tisch hat?«)

Ich halte prinzipiell von Methoden Abstand, in denen sich der Benutzer als Mensch beweisen muss. Die eingangs gestellte Frage sollte man auch so stellen und nicht anders herum!

(Zentrale) schwarze Listen

Ein anderer Ansatz zur automatischen Erkennung von unerwünschtem Spam ist das Anlegen schwarzer Listen um bestimmte Regelmäßigkeiten in Spamkommentaren zu dokumentieren und jeden Kommentar gegen diese Listen abgleichen. Je größer dabei die betrachtete Menge der Kommentare, desto genauer und umfangreicher werden solche Listen. Zentrale Filterangebote wie Akismet werten alle Kommentare der teilnehmenden Websites aus und erstellen so effektive Filter, von denen alle Teilnehmer profitieren. Doch ist mir bei diesem Gedanken etwas unwohl, da die Formulardaten erstmal eine Reise um die halbe Welt antreten um durch die zentralen Server des Unternehmens zu laufen. Dazu kommt, dass nicht behobene falsch-positive Spamerkennungen einen unbedarften Kommentator gleich auf unzähligen anderen Websites ausschließt.

So effektiv und komfortabel Akismet auch sein mag, hier kommt es vorerst nicht zum Einsatz.

Handarbeit

Vorgefertigte Lösungen wie CAPTCHA-Dienste oder Akismet bedienen auch eines: die Bequemlichkeit dauergestresster Webmaster. Allerdings sind beide Lösungen nervig und/oder datenschutzrechtlich zumindest bedenklich. Dennoch habe ich keine Lust täglich zig Spamkommentare zu löschen. Also habe ich mir mit etwas Handarbeit ein eigenes Plugins gezimmert, in dem ich unterschiedliche Methoden zur Erkennung von Bots anwende. Dabei gehe ich von selbst aufgestellten, oder allgemein bekannten Thesen aus um daraus Filtermethoden abzuleiten.

  1. Bots sind dumm

    oder zumindest häufig auf populäre Systeme zugeschnitten. Bei komplexeren Formularen mit mehreren obligatorischen Angaben kann eine Kontrolle der einzelnen Angaben auf Korrektheit schon eine menge Unsinn abfangen. Allerdings sollte man die Filter nicht zu streng auslegen. Eine URL muss nicht zwangsläufig mit ›http://‹ beginnen. Ein Name hingegen endet nur äußerst selten auf ›/index.html‹. Fakultative Felder sollten leer bleiben (Spambots können sich oftmals nur schwer bremsen und füllen gerne alles aus), oder eben den Ansprüchen der Logik genügen: Buchstaben z.B. haben in einer Telefonnummer oder Postleitzahl nichts zu suchen. Wem das zu heikel ist, der sucht nach bestimmten Zeichenketten (›http://‹), man kann sich ja mal vertippen.

    Auf vielen WordPress-basierten Seiten ist die Angabe eines Namens und der E-Mailadresse gefordert, wenn man einen Kommentar hinterlassen will. Wahrscheinlich können die Spamprogramme deshalb die Namens-Attribute der Input-Felder lesen. Wir machen es ihnen aber auch einfach: geschätzte 99,9% aller WordPress-Installationen verwenden für die Namens-Attribute ›author‹, ›email‹, ›url‹ und ›comment‹. Ich habe nicht schlecht gestaunt, als das Spamaufkommen hier um gut 90% zurückging, nur weil ich diese Attributwerte durch zufällig generierte Zeichenketten wie ›df4928j‹ ersetzt habe. Die Bots hier verstehen offenbar noch keine Labels.

  2. Bots sind schnell

    Auf dieser Seite beträgt die Zeitspanne zwischen Aufruf des Artikels und Eintrag des Kommentars bei automatisiertem Spam im Durchschnitt 2,5 Sekunden. Selbst wenn ein Mensch den gesamten Artikel schon kennt, und einen vorbereiteten Kommentar einfach nur einfügt und absendet, dürfte er bedeutend länger brauchen. Momentan habe ich die Grenze bei 6 Sekunden gesetzt.

  3. Bots lesen keine Stylesheets

    Diese Theorie kann man sich zu nutze machen um eine Falle zu platzieren. Ein zufällig platziertes weiteres Formularfeld wird per Stylesheet für alle Parteien aus dem Sichtbereich geschoben bzw. gar nicht mehr angezeigt. Ist das Feld dennoch ausgefüllt, war mit sehr hoher Wahrscheinlichkeit ein Bot am Werk. Wer auf Nummer sicher gehen will, kann hier auch eine Logikfrage platzieren, für den seltenen Fall, dass ein Textbrowser verwendet wird, der kein CSS interpretiert.

Die Kombination dieser Methoden klappt momentan so gut, dass ich auf die Angabe von Name und E-Mail inzwischen verzichten kann und Kommentare auch sofort eingetragen werden können, ohne von mir überprüft zu werden. Schlägt einer der Filter an, wird der Kommentar nicht gänzlich gelöscht, sondern nur als Spam markiert. Notfalls hole ich sie von Hand wieder zurück.

Auf statischen Seiten habe ich auf diesem Weg sehr gute Erfahrungen gemacht. Die Umsetzung als WordPress-Plugin ist noch in der Testphase. Wenn irgendwo Probleme beim Kommentieren auftreten, würde ich mich über eine kurze Problembeschreibung per E-Mail sehr freuen.

Mir ist bewusst, dass auf einer vergleichsweise kleinen Seite wie dieser andere Bedingungen herrschen als auf den großen Blogs und dass der Kampf gegen automatisierten Spam wahrscheinlich bis zum jüngsten Tag andauern wird, da sich auch Spambots weiter entwickeln. Solang ich aber mit etwas Handarbeit auf CAPTCHAS und Akismet verzichten kann, werde ich es auch tun.

Kommentare

  1. 01) 20.04.2010
    Francesco

    Bezüglich Captchas und Anti-Spam-Maßnahmen wie Akismet stimme ich dir voll und ganz zu. Ich habe mit dem Plugin AntispamBee von Sergej Müller bisher sehr gute Erfahrungen gemacht. Es fügt ein zusätzliches textarea ein und versteckt es mit CSS.

  2. 02) 20.04.2010
    David

    ›AntispamBee‹ kannte ich bisher nur vom Namen her. Ich werd mir das Plugin mal genauer anschauen, danke.

  3. 03) 19.03.2011
    Marc

    Mit AntispamBee oder NoSpamNX bin ich auch sehr zufrieden, sie basieren ja auch ähnlichen Prinzipien.
    Doch in letzter Zeit häufen sich bei mir manuelle Spamkommentare wie "Toller Beitrag. Lese gerne dein Blog" u.ä. Und diese muss ich dann immer von Hand moderieren, und leider nachdem sie erschienen sind. Hast du da zufälligerweise einen Tipp zur Hand?

  4. 04) 22.03.2011
    David

    Kein automatischer Filter wird jemals perfekt sein. Schon allein deshalb, weil solche Kommentare wie Du sie beschreibst im Ermessensspielraum des Betreibers liegen. Solange die automatischen Porno- und Medikamentenlinks zuverlässig rausgelesen werden bin ich zufrieden. Den Rest zähle ich zu den regelmäßig anfallenden Wartungsaufgaben, wie Backups und Updates dazu. Wenn ich mal nicht zeitnah reagieren kann, lege ich die Kommentare halt in die Moderationswarteschleife. Ansonsten finde ich es keineswegs problematisch, wenn ein unerwünschter Link mal ein paar Stunden zu sehen ist.

Fragen, Ideen oder Kritik? – Hier ist Platz dafür!

Dein Kommentar

Um ein Kommentar abzugeben, reicht der Text im Kommentarfeld. Die Angabe eines Namens wäre nett, ist aber nicht erforderlich.

Du darfst folgenden HTML-Code verwenden, musst aber nicht:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Dieser Artikel wurde auf folgenden Seiten verlinkt

  1. 17. Februar 2011: Anonymous