5 Anti-Spam-Maßnahmen für phpBB 3.0
There is an updated English version of this blog post available.
phpBB ist als Foren-Software mit offenem Quellcode sehr beliebt und weit verbreitet. Aus diesem Grund ist es aber auch häufig das Ziel von Spammern. In der Version 3.0 wurde deshalb unter anderem ein besseres Captcha eingeführt. Leider haben sich die Spammer inzwischen auf die neue Version eingestellt und Bots geschrieben, die das Captcha automatisch überwinden und Beiträge absetzen können. Im Folgenden werden deshalb fünf Anti-Spam-Maßnahmen beschrieben, die sich in jeder phpBB-3.0-Installation einsetzen lassen und sehr effektiv sind. Ziel ist es dabei, möglichst viele Spam-Beiträge zu blockieren ohne den normalen Betrieb des Forums zu beeinträchtigen.
Maßnahme 1: Links
Spammer versuchen meist bestimmte Websites zu bewerben. Deshalb enthalten etwa 95% aller Spam-Beiträge Links bzw. URLs. Die effektivste Methode solche Beiträge zu verhindern, ist Links komplett zu sperren. Da die hier vorgestellten Maßnahmen normale Benutzer aber möglichst wenig beeinträchtigen sollen, kann ein kleiner Trick verwendet werden: Es wird davon ausgegangen, dass ein Spammer sich in einem Forum neu anmeldet und direkt damit beginnt, Werbebotschaften zu schreiben. Das heißt, Gäste und Benutzer mit weniger als einer bestimmten Zahl von Beiträgen werden als potenzielle Spammer behandelt. Ihre Beiträge werden genauer untersucht. Alle anderen Benutzer bleiben von den Maßnahmen unbetroffen.
Um Beiträge mit Links zu blockieren, kann die Funktion submit_post()
in der Datei includes/functions_posting.php
um folgende Zeilen ergänzt werden:
Dieser Code sollte selbstverständlich ganz am Anfang der Funktion stehen, damit die Beiträge vor dem Speichern gefiltert werden.
Maßnahme 2: Bilder
Spammer versuchen Filter oftmals durch den Einsatz von Bildern zu
umgehen. Dazu schreiben sie ihre Werbebotschaften und Links in
Bilddateien und hängen diese an Foren-Beiträge an. Mit dem gleicher
Methode wie oben beschrieben, können in der Funktion submit_post()
in der Datei functions/functions_posting.php
Beiträge mit Bildern
geblockt werden:
Maßnahme 3: Russische und Chinesische Beiträge?
Einige Spam-Beiträge sind auf Russisch oder Chinesisch oder enthalten einfach nur eine Menge unleserlicher Sonderzeichen. Man kann sich zunutze machen, dass in deutsch- und englischsprachigen Foren in der Regel nur Deutsche bzw. Englische Beiträge erwünscht sind. Beiträge mit sehr vielen Sonderzeichen bzw. Zeichen aus fremdsprachigen Alphabeten können problemlos als Spam betrachtet werden.
Cory Mawhorter hat eine kleine
PHP-Funktion
veröffentlicht (is_english()
), die auf einfache Weise Sonderzeichen
erkennt. Diese kann verwendet werden, um Deutsche bzw. Englische Texte
von fremdsprachigen zu unterscheiden:
Maßnahme 4: http:BL
Das Project Honey Pot bietet ein effektives System an, um Spammer und Adresssammler von Webseiten fern zu halten. http:BL gleicht die IP-Adresse eines Besuchers mit einer Datenbank ab. Ist die IP-Adresse bekannt und verbirgt sich dahinter ein Spammer, dann kann der Besucher schon gesperrt werden bevor er die Webseite sieht. Das System verwendet DNS, wodurch die Abfragen relativ schnell sind.
Um http:BL zu verwenden, muss man sich bei Project Honey Pot
registrieren. Dadurch erhält man einen Schlüssel, der dem eigenen
Benutzernamen eindeutig zugeordnet ist. Project Honey Pot will dadurch
Missbrauch des Systems verhindern. Ein
MOD für phpBB
wird angeboten, allerdings nur für Version 2.0. Diesen kann man unter
Umständen an phpBB 3.0 anpassen. Alternativ kann man folgenden Code an
das Ende der Datei common.php
kopieren:
In der Variablen $httpblkey
muss der http:BL Access Key angegeben werden.
Maßnahme 5: Akismet
Eine weitere Methode, Spam zu blockieren, ist Akismet. Dieses System wird auch gerne in WordPress-Blogs eingesetzt. Wie für Project Honey Pot, benötigt man hierfür einen API-Key, den man durch eine Registrierung erhält.
In Foren kann Akismet zum Beispiel beim Absenden von Beiträgen
verwendet werden. Das System kann zu Falschmeldungen führen, weshalb
die Filterung auch hier wieder nur auf die ersten Beiträge eines
Benutzers beschränkt wird. Der folgende Code verwendet die Datei
Akismet.class.php
, die man von Alex Potsides’ GitHub-Repository
herunterladen kann. Der Code kann in die Funktion submit_post()
in der Datei includes/functions_posting.php
eingefügt werden:
Die Variable $akismet_key
muss den Akismet API Key enthalten. Die
URL, die man bei der Registrierung für einen WordPress-Account angegeben
hat, muss in der Variablen $akismet_url
stehen.
Akismet kann desweiteren sinnvoll bei der Registrierung von neuen
Benutzern eingesetzt werden. Dazu ist folgender Code in die Funktion
user_add()
in der Datei includes/functions_user.php
einzufügen:
Fazit
Die hier vorgestellten Maßnahmen helfen, das Spam-Aufkommen in phpBB-3.0-Foren drastisch zu reduzieren. Seit dem Aktivieren der verschiedenen Filter im Spamihilator-Forum konnte kein einziger Spammer einen Beitrag absetzen. Das Blockieren von Links und Bildern ist dabei die effektivste Methode. Durch das Filtern von Sonderzeichen werden alle anderen Spam-Beiträge verhindert. Der normale Betrieb wird kaum gestört, da die Maßnahmen nur neue Benutzer betreffen. Sobald ein Benutzer eine bestimmte Anzahl von “guten” Beiträgen geschrieben hat, werden die Filter deaktiviert. Bisher hat dies noch kein Spammer ausgenutzt. Falls dies jemals der Fall sein sollte, kann die Schwelle sehr leicht erhöht werden.
Trotz aller Filtermaßnahmen beim Schreiben von Beträgen, bleibt immer noch das Problem, dass Spammer sich nach wie vor registrieren und in ihrer Signatur auf eine Webseite verlinken können. Maßnahmen für dieses Problem sind noch zu entwickeln.
In vielen von Spam geplagten Foren sind Gäste nicht zugelassen. Man muss sich registrieren, um Beiträge schreiben zu können. Dies kann für einfache Support-Foren zu umständlich sein. Die Benutzer möchten gerne Beiträge schreiben können ohne lange und komplizierte Registrierungsverfahren zu durchlaufen. Mit den in diesem Artikel vorgestellten Maßnahmen können Gäste grundsätzlich wieder zugelassen werden, denn die Filterung ist für solche immer aktiv.
Posted by Michel Krämer
on 8 April 2009
Next post
Scala projects with Eclipse PDE Build
The Scala IDE does not support Eclipse PDE yet. This article explains how to configure your OSGi-based project, so you can run your PDE build in headless mode and compile your Scala code.
Related posts
5 anti-spam measures for phpBB 3.0
Discussion boards powered by phpBB are regularly targeted by spammers. Version 3 has introduced an improved Captcha but there are more possibilities to reduce spam. In this article, I present five useful and effective measures.
Spamihilator 1.7 has been released!
Eight years after the last update, I’m very happy to announce a new version of my free spam filter Spamihilator! This version is a maintenance release. It fixes some minor bugs and improves security.
Spamihilator 1.6 has been released!
The new maintenance release 1.6 of the popular anti-spam filter has just been released. In this version, the internal encryption layer has been updated to disable the insecure SSLv2 protocol and to prevent SSLv3 POODLE attacks.