Erstellung eines CAPTCHA für ein Wordpress-Blog

Aus Tipps, Tricks und Anleitungen
Version vom 11. November 2015, 14:52 Uhr von Edit (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Artikel |Frage=Wie kann ich ein CAPTCHA in mein Wordpress-Blog einbauen, um Spam-Kommentare zu verhindern? |Text=<u>'''Wichtige Hinweise'''</u> '''Die besc…“)

(Unterschied) →Nächstältere Version | Aktuelle Version ansehen (Unterschied) | Nächstjüngere Version← (Unterschied)
Wechseln zu: Navigation, Suche
Amazon-Werbung
Hinweis: Der Autor des Artikels ist kein ausgebildeter Fachmann zum Thema. Alle hier getroffenen Aussagen sind nach bestem Wissen sowie gegebenenfalls nach persönlicher Einschätzung des Autors getroffen. Dabei ist es leider nicht auszuschließen, dass einige Angaben veraltet, irreführend oder sonstwie fehlerhaft sind. Letztendlich liegt es in der Verantwortung jedes einzelnen Lesers, die hier gemachten Angaben zu überprüfen und gegebenenfalls weitere Informationen einzuholen. Der Autor kann und will darum keine Garantie oder Haftung für Probleme oder Verluste, die trotz oder wegen der Befolgung der hier genannten Ratschläge eintreten, übernehmen. Jeder Leser hat natürlich die Möglichkeit, die folgenden Ratschläge nicht zu befolgen oder sie gar nicht erst zu lesen.


Wie kann ich ein CAPTCHA in mein Wordpress-Blog einbauen, um Spam-Kommentare zu verhindern?

Wichtige Hinweise Die beschriebene Lösung ist eine programmiertechnische Lösung. Es wurde versucht, sie so genau wie möglich zu beschreiben, damit auch Laien sie durchführen können. Bitte lese Dir den Artikel erst einmal genau durch und entscheide dann, ob Du die Anleitung umsetzen willst. Die Beschreibung wurde nach besten Wissen und Gewissen erstellt, allerdings wird keinerlei Haftung übernommen für irgendwelche Probleme, die trotz oder wegen der Anwendung der hier beschriebenen Methode auftreten.

Der Zeitaufwand sollte deutlich weniger als eine Stunde betragen. Dafür werden zukünftig die meisten unerwünschten Nachrichten automatisch abgewiesen, so dass man diese Zeit schnell wieder eingespart hat.

Einleitung

Die Blogsoftware von Wordpress ist sehr beliebt und verbeitet und kann kostenlos heruntergeladen und auf einer eigenen Internetpräsenz genutzt werden. Innerhalb des Blogs haben Besucher die Möglichkeit, Kommentare zu hinterlassen. Leider missbrauchen einige Benutzer und automatische Spambots die Kommentarfunktion gezielt, um ungewünschte Botschaften und insbesondere ungewollte Werbung zu verbreiten. Wenn man diese ungewollten Botschaften nicht unterdrückt, wird die Qualität des Blogs deutlich gemindert da zwischen dem ganzen "Müll" wichtige Kommentare schwerer auffindbar sind. Der Betreiber dieses Blogs muss in vielen Fällen per Hand entscheiden, ob ein Artikel erwünscht ist oder nicht. Bei manchen Blogs sammeln sich allerdings täglich hunderte von Kommentaren, die ganz offensichtlicher Müll sind, da sie bestimmte Merkmale enthalten, die sie eindeutig unerwünscht machen. Dieser eindeutige Müll soll abgewiesen werden, ohne dass der Betreiber je wieder einen Blick auf sie werfen muss.

Alternative Problemlösungen

Die im folgenden beschriebene Methode setzt darauf, menschliche Nutzer und automatisierte Programme mittels eines CAPTCHA durch eine einfache Testfrage zu unterscheiden. Kommentare, in denen diese einfache Testfrage nicht beantwortet wird, werden abgewiesen. Auf diese Wiese wird es im Idealfall für Spambots unmöglich, ihre Botschaften zu verbreiten. Allerdings bleibt es weiterhin möglich, das Menschen Spam und unerwünschte Nachrichten eingeben. Diese schaffen allerdings weitaus weniger Einträge als ein Computerprogramm.

Alternativ oder sogar zusätzlich könnte man einen Filter einbauen, der bestimmte Merkmale in Spam-Emails erkennt und derartige Mails sofort löscht, bevor sie sichtbar werden oder in die Datenbank gelangen.

Problemlösung

Bots haben das Problem, dass sie zwar schnell eine bestimmte Aufgabe (zum Beispiel das Schreiben von Spamkommentaren) erfüllen können, ansonsten aber dumm sind. Sie können massenhaft Nachrichten in ihnen bekannte Formulare eingeben, jedoch schlecht auf Veränderungen vom Standard reagieren. Die Programmierer der Bots, wären zwar oft intelligent genug, ihren Bot auf neue Eingabeformulare anzupassen, jedoch lohnt sich für sie der Zeitaufwand nicht, individuelle Lösungen für jede Webseite zu entwickeln, die ihr Formular variiert.

In diesem Beispiel wird eine einfache Zusatzfrage eingebaut, die Nutzer zusätzlich zu ihrem eigentlichen Kommentar eingeben müssen. Nur wer diese Aufgabe lösen kann, darf seinen Kommentar veröffentlichen.

Vorgehen

1. Lade die Datei "wp-comments-post.php" aus dem Hauptverzeichnis der Onlineversion des Blogs herunter. Dies ist die "Arbeitsdatei".

2. Mache in einem anderen Ordner eine Sicherheitskopie dieser Datei (falls irgendein Problem auftritt, kannst du jederzeit wieder die Originalversion von dieser Sicherheitskopie wiederherstellen.

3. Öffne die Arbeitsdatei (nicht die Sicherheitskopie) und suche in dem Programtext die folgenden Zeilen (sie sind ungefähr in Zeile 30):

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

4. Füge unter diesen Zeilen (und vor dem vor dem danachfolgenden Original-Text) folgende Zeilen ein:

 $comment_cap          = trim($_POST['cap']);
 if ($comment_cap != $comment_author && !$user_ID)
   wp_die( __('Du musst den Human Test richtig beantworten, um einen Kommentar zu schreiben. <br><br>
 <a href="javascript:history.back()">zurück zum Formular</a>') );

5. Speichere die Änderungen in der Arbeitsdatei und lade sie dann hoch auf die Internetpräsenz. Dabei muss die online vorhandene Version erstezt werden. Keine Angst: wenn etwas schiefgeht, hast Du ja immer noch die Sicherheitskopie.

6. Lade die Datei "comments.php" aus dem Unterverzeichnis "wp-content/themes/[THEMA]/"der Onlineversion des Blogs herunter. Anstelle von "[THEMA]" musst du in den Ordner deinen verwendeten Wordpress-Themes gehen (wenn du das Theme nie geändert hat, ist das Thema "classic"). Dies ist die "Arbeitsdatei".

7. Mache in einem anderen Ordner eine Sicherheitskopie dieser Datei (falls irgendein Problem auftritt, kannst du jederzeit wieder die Originalversion von dieser Sicherheitskopie wiederherstellen.

8. Öffne die Arbeitsdatei (nicht die Sicherheitskopie) und suche in dem Programtext die folgenden Zeilen (sie sind ungefähr in Zeile 30):

 <?php else : ?>
  <p><label for="author">Name:</label><br />
  <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" tabindex="1" /></p>
  <p><label for="email">E-mail:</label><br />
  <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" tabindex="2" /></p>
  <p><label for="url">URL:</label><br />
  <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" tabindex="3" /></p>

9. Füge unter diesen Zeilen (und vor dem vor dem danachfolgenden Original-Text) folgende Zeilen ein:

 <p><label for="author">Human Test: Schreibe in dieses Feld, das gleiche, was du im Feld Name eingetragen hast</label><br />
  <input type="text" name="cap" id="author" value="<?php echo $comment_cap; ?>" tabindex="3" /></p>

10. Speichere die Änderungen in der Arbeitsdatei und lade sie dann hoch auf die Internetpräsenz. Dabei muss die online vorhandene Version erstezt werden. Keine Angst: wenn etwas schiefgeht, hast Du ja immer noch die Sicherheitskopie.

11. Besuche Dein Blog und versuche, einen Kommentar zu schreiben, ohne die Testfrage richtig zu beantworten (die richtige Antwort ist genau der gleiche Text, den du oben bei Name eingegeben hast). Es sollte eine Fehlermeldung erscheinen, die auf die falsche Antwort hinweist. Der Kommentar wird nicht angenommen und erscheint nirgendwo auf der Blogseite oder im Administrationsbereich. Wenn es nicht so funktioniert, hast du in der Arbeitsdatei etwas falsch gemacht. Lade dann die Sicherheitskopie wieder hoch, damit dein Blog wieder korrekt funktioniert. Gehe dir obigen Schritte dann noch einmal durch, suche den Fehler und versuche es erneut.

12. Wenn der vorige Schritt geklappt hat, einen Kommentar zu schreiben und dabei die Testfrage richtig zu beantworten. Dieser Kommentare sollte nun wie üblich angenommen werden.

13. Fertig.

Was muss ich beachten?

Da immer etwas schiefgehen kann, solltest Du versuchen, die Schritte in einer ruhigen Minute durchzuführen, in der Du keine Hektik hast. Außerdem bietet sich ein Zeitraum an, wo Dein Blog weniger Besucher hat. Wichtig sind die Sicherheitskopie, mit der Du den Ausgangszustand sofort wieder herstellen kannst. Achte darauf, sie nicht versehentlich zu löschen oder zu überschreiben. Auch die Punkte 7. und 8. sind natürlich wichtig, da Du dort sicherstellst, dass sich nirgendwo Fehler eingeschlichen haben.

  • Solltest Du einen Fehler entdecken oder irgendeine Frage haben, kannst Du diese mit dem Link "Rückmeldung geben" unten auf dieser Seite hinzufügen. Bitte bedenke, dass so wie bei Deinem Blog auch nicht immer eine sofortige Rückmeldung kommen kann, da die Betreiber gerade anderwertigt beschäftigt (unter Umständen im Urlaub) sein könnten.
  • Du kannst prinzipiell jeden Texteditor zur Bearbeitung benutzen. Allerdings muss die Datei wieder im Textformat abgespeichert werden (eine entsprechende Option gibt es beim Abspeichern, wenn man die Variante "Speichern unter" o.ä. wählt (Grund: Dokumentenformate speichern zusätzlich LAyoutinformationen in die Datei hinein, was den Programmcode zerstört). Beinahe jedes Betriebssystem besitzt einen einfachen Texteditor. Je einfacher ist in diesem Fall oft besser.
  • Manche Texteditoren ergänzen den Dateinamen um ".txt". In dem Fall muss die fertige Datei umbenannt werden, damit sie wieder "wp-comments-post.php" (ohne die Anführungszeichen) heißt.

Wieso funktioniert das?

Die genannten Dateien sind für die Eingabe und Entgegennahme der Kommentare zuständig. Der wp_die('');-Befehl beendet den Programmablauf, wenn die Testfrage nicht korrekt beantwortet ist und gibt einen Fehlerhinweis. Außerdem wird verhindert, dass Wordpress den Kommentar entgegen nimmt.