Wie man phpBB Foren vor Spam Bots schützen kann

Abstract

Dieser Artikel beschreibt eine Möglichkeit, wie man verhindern kann, dass sich Spam Bots in einem phpBB Forum anmelden können.

Das Problem

Jeder der ein phpBB Forum betreibt, kennt das Problem: So genannte Spam Bot, also Programme, die sich automatisch im Forum registrieren, um dann Beiträge zu verfassen, die meist Links zu dubiosen Webseiten enthalten, zu verfassen. Die Anzahl dieser Spam Bots scheint in der letzten Zeit über alle Maßen zugenommen zu haben. Ich konnte in meinem Forum zum Schluss bis zu fünfzig, sechzig Spam Bots löschen und täglich bis zu zehn Beiträge von ihnen. Das standard Capatcha (Visuelle Bestätigung, es muss eine Zeichenfolge , die in einem Bild dargestellt wird zur Vervollständigung der Registrierung eingegeben werden.) ist für solche Spam Bots schon lange kein Hindernis mehr.

Da man aber einen Konstantenbezeichner nur einen Wert zuweisen kann, fällt das bei true nicht mehr so leicht. Bei Delphi haben sich die Entwickler für -1 entschieden:

Eine mögliche Lösung

Es mag mehrere Lösungen geben, die dieses Problem beheben. Die, die ich hier vorstellen will, hebt sich dadurch hervor, dass sie besonders einfach ist – sowohl von der Idee als auch bei ihrer Umsetzung im Quellcode der phpBB Software.

Grundsätzlich sind Spam Bots Stroh doof und das im wahrsten Sinne des Wortes. Sobald sie auf eine Situation treffen, für die sie nicht programmiert wurden, scheitern sie. Und darauf beruht die Methode, die mir ein Freund und Administrator eines großen phpBB Forums gegeben hat. Es wird einfach ein zusätzlichen Feld bei der Registrierung hinzugefügt, welches zwingend ausgefüllt werden muss und dessen Inhalt überprüft wird:



Das zusätzliche Feld ist rot eingerahmt. In diesen Fall muss einfach die Ziffer "7" in das Feld eingetragen werden. Die Ziffer und der Name des Feldes ist statisch und genau das, ist das einfache an der Lösung. Aber nichts desto trotz erfüllt sie ihren Zweck. Zudem ist sie auch so einfach, dass jeder Mensch sich ohne zusätzlichen Aufwand registrieren kann. Sie ist also auch benutzerfreundlich. Es wäre natürlich jetzt ein leichtes einen Spam Bot zu programmieren, der auch dieses Feld ausfüllt und sich so registrieren kann. Aber bei dem nächsten Forum ist die Ziffer eventuell schon wieder eine andere oder das Feld heißt anders, so dass man auch dort wieder den Spam Bot anpassen müsste. Und das scheint bisher noch nicht den Aufwand zu lohnen. Ich habe bisher nur gute Erfahrungen damit gemacht. Seit ich mit diesem Schutz arbeite, ist es noch keinem Spam Bot gelungen sich im Forum anzumelden. Ein weiterer Nebeneffekt ist der, dass ich auch keine Benachrichtigung-Mails mehr von meinem Mailserver bekomme, dass irgendwelche Mails zur Komplettierung der Registration nicht zugestellt werden konnten.

Der Code

Die nötigen Änderungen am Quellcode, sind wie schon gesagt, minimal:

Überprüfung des zusätzlichen Feldes:

  1. Öffne Datei /data/usercp_register.php
  2. Finde "if ($board_config['enable_confirm'] && $mode == 'register')"
  3. Füge _DAVOR_ ein:
////
////  Confirm-Number BEGIN 
//// 
$cNumber = (isset($HTTP_POST_VARS['confirm_number'])) ? intval( $HTTP_POST_VARS['confirm_number'] ) : 0; 
if ($cNumber != 7){ 
   $error = TRUE; 
   $error_msg .= ( ( isset($error_msg) ) ? '
' : '' ) . $lang['Confirm_code_wrong']; } unset( $cNumber ); //// //// Confirm-Number END ////

Einbauen des zusätzlichen Feldes bei der Registrierung:

  1. Öffne Datei "/templates/subSilver/profile_add_body.tpl"
  2. Finde "<!-- END switch_confirm -->"
  3. Füge _DANACH_ ein:
<tr>
    <td class="row1"><span class="gen">Gebe in nebenstehendes Feld bitte die Ziffer __sieben__ ein:
      </span><br /><span class="gensmall">Dieses Feld wird benötigt, damit das automatische
      Erzeugen von Accounts zwecks Werbung erschwert wird.</span></td>
    <td class="row2"><input type="text" class="post" style="width: 200px" name="confirm_number" size="6"
      maxlength="6" value="" /></td>
</tr>

Das war es auch schon.

Update

Leider scheint diese Abfrage bei aktuellen Versionen des Forums auch zu kommen, wenn der Benutzer einen Avatar hochläd bzw. ändert. Da ich das PHPBB Forum nicht mehr einsetze, kann ich dazu nichts weiter sagen. Ich bitte davon abzusehen mir diesbezüglich E-Mails zu senden, da ich leider nicht weiterhelfen kann.

Wer aber dafür eine Lösung findet, kann sie mir gerne zu senden, damit ich den Code und die Anleitung hier aktualisieren kann. Vielen Dank für eure Mitarbeit.

2011-02-09T17:02:51 +0100, mail[at]michael[Bindestrich]puff.de