Da ja die Fragen sich hier in letzter Zeit wiederholen, möchte ich hier auf das Problem und seine Möglichen Lösungen eingehen. Wenn einer der Admins Lust hat kann er das Thema ja auch sticky machen. Ideen, Korrekturen, Ergänzungen usw. per PN an mich oder einfach darunter schreiben.

Problem
Gästebücher, Foren, Wikis, Weblogs, Shoutboxen und Kommentarfeldern sind von dieser Art von Spam betroffen. Oft werden dort Einträge gemacht, die als Inhalt Links diverse Internetseiten enthalten. Der Grund für diesen Spam ist, bei Google und anderen Suchmaschinen einen möglichst hohen [Link nur für registrierte Mitglieder sichtbar. ] für die Seite des Spammers zu erzeugen. Google bewertet eine Internetseite höher, wenn sie von vielen anderen Seiten verlinkt wird. Er will also in den Suchtreffern möglichst weit nach oben gelangen und dazu erzeugt er Einträge z. B. in Gästebüchern und verlinkt von dort aus seine Seite.

Das alles wäre im Grunde ein recht kleines Problem, weil man die Einträge ja wieder manuell löschen könnte. Leider lassen die meisten Spammer diese Aufgabe von so genannten [Link nur für registrierte Mitglieder sichtbar. ] erledigen. Diese Computerprogramme erzeugen solche Einträge automatisiert und oft werden die gleichen Einträge immer und immer wieder wiederholt. Oft kommen Bots täglich oder mehrmal die Woche um den gleichen oder ähnlichen Mist abzuladen. Diese Bots rufen die Seite mit den Einträgen meist garnicht auf, sie füllen nur das Formular mit ihren Werbeeinträgen und schicken es an den Server ab.

Lösungen
Vorab eines: Die perfekte Lösung gibt es nicht. Man kann dem Problem auf viele Arten begegnen, irgendwie hat aber jede Art ihre Vor- und Nachteile. Ich werde diese aber bei jeder Lösungsmöglichkeit dazu schreiben. Leider sind die wirkunksvollen Lösungen aber nicht ganz ohne technisches Wissen einsetzbar. Viele fertige Skripte verfügen aber über ein paar Vorkehrungen um den Spam zu minimieren, seht euch also die Optionen an und vergleicht die Software mit anderer Software. Folgende Beispiele werden immer anhand eines Gästebuches beschrieben, das grundsätzliche Vorgehen ist aber bei allen Onlineformularen, wie Weblogs, Kommentarfelder usw. gleich.

Grundsätzliches
Da die Werbeeinträge fast immer von Bots getätigt werden, welche das Eingabeformular analysieren und automatisch beschicken, empfiehlt es sich ein paar grundsätzliche Regeln zu beachten um der großen Spamwelle zu entkommen.
  • Nehmt wenn möglich keine fertigen Skripte und wenn ihr sie einsetzt ändert sie etwas ab (wie unten beschrieben). Fertige Gästebücher sind den Spammern gut bekannt und er weiß wie er welche Felder mit seinem Mist befüllen muss. Sucht auch nach alternativen Skripten und nehmt nicht das erstbeste. Es gibt mittlerweile genügend Websoftware die wenigstens die einfachsten Filter und Spamschutzfunktionen mitbringt. Meist gegnügt das schon.
  • Benutzt bei den Eingabefeldern im INPUT-Tag als Feldnamen nicht "email", "name" oder "comment". Ändert die Feldnamen auf "aaa" oder "asdf1". Damit ist es Bots schon mal nicht möglich anhand des Feldnames den gewünschten Inhalt des Feldes herauszufinden. Dann scheitern sie z. B. daran, dass sie ein Feld, welches eine syntaktisch korrekte E-Mail-Adresse enthalten muss ( [Link nur für registrierte Mitglieder sichtbar. ]), mit Mist befüllen der keine E-Mail-Adresse ist.
  • Nennt eure Gästebuchseite nicht "guestbook.html" oder "gaestebuch.php", ihr macht es den Spammern damit nur leichter die für sich interessanten Seite bei Google zu finden.
  • Lasst euch bei jedem neuen Eintrag eine E-Mail senden, damit ihr reagieren könnt falls etwas vorfällt.


Moderation
Die Moderation ist die einfachste Lösung für das Problem. Moderation bedeutet, euer Gästebuch nimmt einen Eintrag entgegen, aber veröffentlicht ihn nicht sofort. Es sendet euch einen E-Mail und lässt euch entscheiden ob der Eintrag erscheinen soll oder nicht. Diese Lösung hält euer Gästebuch zu 100% werbefrei, leider ist es aber mit etwas Arbeit verbunden und eure Besucher sehen ihre eigenen Einträge auch nicht mehr sofort.

Disclaimer / Nutzungsbestimmungen
Vereinzelt wurde im [Link nur für registrierte Mitglieder sichtbar. ], man könnte das Problem lösen, indem man in sein Gästebuch ein virtuelles "Verbotsschild" (oft auch als Disclaimer bezeichnet) montiert. Man verbietet also ausdrücklich, dass in dem Formular Werbeeinträge erfasst werden. Dies könnte einzelne davon abhalten dort ihre Spameinträge zu hinterlassen, weil sie rechtliche Folgen befürchten. Leider interessieren sich Bots überhaupt nicht für diese Verbote, sie wollen nur ihren Müll loswerden. Außerdem kommen viele Bots aus dem Ausland, so dass eine effektive strafrechtliche Verfolgung meist unmöglich wird. Disclaimer sind also schönes Beiwerk, wirklich bringen werden sie in der Praxis aber nichts.

IP-Blacklists
Unter Blacklisten versteht man eine Art der Filterung gegen eine Liste von bekannten Bösewichten. So kann man bekannte IP-Adressen oder ganze Adressbereiche auf eine Liste setzen und von diesen keine Einträge mehr annehmen. Grundsätzlich kann man die Filterung durch den Webserver erledigen lassen (s. Beitrag von [Link nur für registrierte Mitglieder sichtbar. ]) oder man schreibt sich selbst ein kleines Skript welches unerwünschte Gäste fern hält. Der Aufwand für solche Blacklisten ist mittelmäßig. Sie müssen von euch regelmäßig manuell aktualisiert werden, sonst werden sie nutzlos. Außerdem gibt es auch gegügend Bots welche auf Einwahlnummer laufen, die alle 24h ihre IP-Adresse ändern. Hier müsstet ihr dann ganze Subnetze blockieren um den gewünschten Erfolg zu erreichen. Es gibt auch Blacklisten die von anderen gewartet und aktualisiert werden. [Link nur für registrierte Mitglieder sichtbar. ] bietet eine solche URL-Blacklist an. Mit ihr kann man Beiträge ausfiltern lassen welche bestimmte URLs enthalten und damit sind wir schon beim nächsten Punkt.

Filter
Der Einsatz von Filtern kann auch sehr nützlich sein. Man kann die Beiträge z. B. nach bestimmten Schlüsselwörtern oder ganz allgemein nach URLs durchsuchen und solche Beiträge ablehnen. Weiterhin sollte man auch falls möglich HTML, JavaScript und solches Gedöhns ausfiltern und/oder kodieren. Gute Dienste leisten hier in PHP die Funktionen "strip_tags()" und "htmlentities()". Natürlich können dann aber auch keine normalen Besucher Einträge mit URLs verfassen. Sollte sich diese Filterung deshalb nicht einsetzen lassen, empfehle ich die Links mit dem Attribut rel="nofollow" auszustatten. Für Google erzeugt dieser Link dann keinen Pagerankwert mehr (s. Punkt 14 - [Link nur für registrierte Mitglieder sichtbar. ]).

Cookies / Referer
Wer in PHP fit ist, kann auch den Trick mit den Cookies probieren. Dabei erzeugt man auf der Einstiegsseite des Gästebuchs auf dem Rechner des Eintragenden ein Cookie. Wird eine Eintrag erfasst prüft man, ob der Browser dieses Cookie mitgeliefert hat. Wenn nicht wird der Eintrag ignoriert. Ähnliche Spielereien sind auch mittels der Session-Funktion von PHP möglich. Leider können dann Benutzer ohne aktivierte Cookies keine Einträge mehr verfassen und auch vor schlauen Bots bietet dies keine Sicherheit. Sie können das Cookie wie gewünscht zurückliefern. Im Moment aber ist diese Variante noch sehr sicher, es wurden noch keine Bots gesehen die dies konnten. Genauso fläschbar sind Überprüfungen des [Link nur für registrierte Mitglieder sichtbar. ], auch wenn dieser Check im Moment noch recht effektiv sein sollte.

Captchas
Unter Captchas versteht man meist Bilder aus denen mal eine Buchstaben- und Zahlenkombination ablesen muss. [Link nur für registrierte Mitglieder sichtbar. ] sind mittlerweilen bei allen großen Onlinediensten verbreitet. Sie sind von Rechnern sehr schwer oder nur mit erheblichem Rechenaufwand auszulesen (wenn es auch nicht unmöglich ist - [Link nur für registrierte Mitglieder sichtbar. ]) und deshalb z. Z. fast 100%ig sicher. Der größte Nachteil ist, dass Besucher mit reinen Textbrowsern oder z. B. blinde Menschen nicht in der Lage sind diese Bilder in ihrem Browser zu sehen. Sie werden damit auch ausgeschlossen.

zusätzliche Felder
Hier im Forum wurde auch schon der Einsatz von zusätzlichen Feldern empfohlen. Dabei muss der Eintrager in ein bestimmtes Feld einen vorgegebenen Text eingeben, welcher daneben steht. Im Grunde sind solche Überprüfungen recht leicht zu umgehen. Allerdings wird dies noch kaum ein Bot automatisiert schaffen. Eine weitere Spielart sind einfach zu lösende Rechenaufgaben.