Hack gegen Kommentar-Spam

Eine wirklich nervige Sache im Zusammenhang mit Weblogs ist Kommentarspam. Dabei handelt es sich um Kommentare zu den Blog-Einträgen, die sich aber nicht wirklich auf den Inhalt beziehen sondern nur Werbung oder Links zu anderen Seiten enthalten. Diese Kommentare werden automatisiert durch Spam-Bots verteilt, bei mir landen in der Woche meistens mehr als 150 solcher Einträge, Tendenz steigend.

Um dem einen Riegel vorzuschieben habe ich dem WordPress-System einen kurzen aber prägnanten Hack angedeihen lassen. Ab sofort muß man in ein spezielles Feld 123 eintippen um einen Kommentar zu hinterlassen. Das ist nicht allzu kompliziert, es dürfte aber reichen um einen Bot aus dem Tritt zu bringen.

Hier die benötigten Eingriffe in das WordPress-System: in den Dateien comments.php und comments-popup.php innerhalb des verwendeten Theme-Verzeichnisses wird nach dem folgenden Block gesucht:

<p>
  <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?/>" size="28" tabindex="3" />
  <label for="url">< ?php _e("<acronym title="Uniform Resource Identifier">URI"); ?></label>
</p>

An diesen wird in beiden Dateien ein weiterer Block angehängt der wie folgt aussieht:

<p>
  <input type="text" name="code" id="code" value="<?php echo ""; ?>" size="28" tabindex="4" />
  <label for="code">Bitte hier 123 eingeben (wegen Spamschutz)</label>
</p>

In der Datei wp-comments-post.php wird an den Block

if ( '' == $comment_content )
  die( __('Error: please type a comment.') );

der folgende Code angehängt.

if ( $comment_code != "123" )
  die( __('Fehler: Bitte 123 in das Eingabefeld eingeben. Dies ist leider nötig um Kommentarspam zu verhindern.<br />'.
    'Error: Please enter 123 in the anti-spam-field. This is necessary to avoid comment-spam.') );

Das war’s schon. Natürlich kann der Code 123 auch durch was anderes ersetzt werden, aber ich denke es sollte nicht zu kompliziert sein. Man will seine Gäste ja auch nicht verschrecken… :-)

3 Kommentare

  1. Huhu…

    Mist. Dieser Hack hilft zwar gegen Kommentarspam, aber mit Trackbackspam hätte ich nicht gerechnet. Und genau das ist leider die Haupt-Quelle. Eine wirkliche Lösung steht also noch aus… :-(

    Ciao,
    Ronald.

  2. In der wp-comments-post.php ist noch eine weitere Änderung erforderlich, damit das Ganze funktioniert:

    Nach den Zeilen:

    $comment_author = trim($_POST[‚author‘]);
    $comment_author_email = trim($_POST[‚email‘]);
    $comment_author_url = trim($_POST[‚url‘]);
    $comment_content = trim($_POST[‚comment‘]);

    muss noch folgende Zeile ergänzt werden:

    $comment_code = trim($_POST[‚code‘]);

    Dann funktioniert es. Der Kommentar-Spam bleibt draussen. Dass die Modifikation nichts am Trackback-Spam-Aufkommen ändert, ist allerdings nach wie vor ein Problem…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

;-) :-) :-D :-| :-/ :-( :-P more »