No Guestbook Spam   schrelb.de
Adresse: http://www.schrelb.de/Gaestebuch_Spam_bekaempfung.php

Gästebuch Spam bekämpfen

Mittlerweile scheint es unter den Spammern ja Mode geworden zu sein nicht nur unerwünschte E-Mails zu versenden sondern auch Gästebücher zu bespammen. Da mein Gästebuch moderiert ist, hatte ich zwar nie Probleme mit dem Inhalt des Spams, es ist trotzdem ärgerlich diese Nachrichten regelmässig löschen zu müssen.

Erfolg

Es ist Überwältigend zu sehen wie dumm die Parser der Spammer sind Smilie Seit fast zwei Monaten ist mein Gästebuch frei von Spam Smilie .

In der letzten Zeit hamm die Spammer wohl auch aufgerüstet. Sie können jedoch immer noch keine fehlerfeien Posts absetzen. Ich habe die Vermutung das sie Formularfelder deren Bedeutung sie nicht kennen mit Platzhaltern füllen. Eine einfache Filtermassnahme wäre daher zu prüfen ob die doppelten Felder oder extra Felder leer sind.

1. Datenfelder verschleiern

Um Einträge in Gästebüchern automatisch zu erstellen müssen die Spammer die Namen und die Bedeutung der Formularfelder kennen. Um den Parsern der Spammer ihr Handwerk zu erschweren hab ich zuerst die Formularfeldnamen dynamisiert. Die Formularfeldnamen wechseln also regelmässig, und machen dadurch auch ein manuelles Eintragen in eine Datenbank sinnlos.

Die Feldnamen bestehen nun aus md5 Hashes. In die Berechnung des Hashes gehen der ursprüngliche Datenfeldname, ein Teil des Datums (etwas das sich selten verändrt, Tag,..) ein. Um zu verhindern das aus der Anordnung der Datenfelder das richtige Feld erraten wird, habe ich jedes Datenfeld dupliziert. Die Doubletten werden mit CSS ausgeblendet.

2. Klickstrom und Bearbeitungszeit

Was unterscheidet Bots von Menschen? Die Geschwindigkeit, kommt ein Bot an einem Gästebuch vorbei, trägt er sich sofort ein. Ein Mensch muss erst seinen Text eingeben. Die letzte Massnahme besteht also darin eine Minimalzeit zwischen Seitenaufruf und Eintrag zu erzwingen.

Ein Nutzer muss also das Gästebuch einmal aufrufen und kann erst nach einer Mindestzeit (bei mir etwa 6 Sekunden) seine Nachricht eintragen.

Wie Programmiert man so etwas? Am einfachsten geht dies natürlich mit Sessions. Ist jedoch wegen der dabei verwendeten Cookies nicht so ideal. Eine andere Möglichkeit ist erneut das verwenden von Hashes. Es gibt also Formularfelder die verbotene Timestamps übertragen. Für einen Angreifer ist eine Manipulation der Timestamp allerdings nicht möglich. Da an die Timestamps eine dem Angreifer unbekannte Zeichenkette angehängt wird.

3. Blacklist für blöde Bots

Ein Bot hat es dennoch geschafft einen Eintrag zu schreiben. Nur war der völlig Sinnfrei Smilie . Ich vermute das er einfach alle Datenfelder mit (gleichbleibendem) Mist gefüllt hat. Nun wird halt abgefragt ob eben dieser Mist vorhanden ist und danach geblockt.