Wordpress Kommentarspam unterdrücken

Aus Tipps, Tricks und Anleitungen
Version vom 11. November 2015, 14:46 Uhr von Edit (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Artikel |Frage=Wie kann ich Spamkommentare in meinem Wordpress-Blog verhindern? |Text=<u>'''Wichtige Hinweise'''</u> '''Die beschriebene Lösung ist eine p…“)

(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 Spamkommentare in meinem Wordpress-Blog 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.

Im Administrationsbereich gibt es mehrere Möglichkeiten, die Veröffentlichung von Kommentaren zu steuern. Insbesondere lassen sich dort Blacklists konfigurieren (unter dem Menupunkt "Options" -> "Discussion", die bestimmte Inhalte oder von bestimmten IP-Adressen gesendete Kommentare unterdrücken. Es gibt allerdings nur zwei Arten von Blacklists:

  • Comment Moderation sorgt dafür dass alle Kommentare, die einen unerwünschten Begriff enthalten, automatisch moderiert werden müssen. Das heißt, sie werden nicht sichtbar, bevor der Administrator sie explizit freigibt. Allerdings muss ein Administrator alle diese Kommentare täglich durchscannen, obwohl er sie schon eigentlich verweigert hat, da sich zwischen ihnen ja dennoch erwünschte Nachrichten verstecken können.
  • Comment Blacklist entfernt die Kommentare komplett aus dem sichtbaren Bereich und die Kommentare sind weder für Besucher noch für Administratoren sichtbar. Das Problem dieser Blacklist ist, dass die Kommentare dennoch in der Datenbank verbleiben und dort Speicherplatz verbrauchen.

Alternative Problemlösungen

Die im folgenden beschriebne Methode setzt darauf, bestimmte Merkmale in Spam-Emails zu erkennen und derartige Mails sofort zu löschen, bevor sie sichtbar werden oder in die Datenbank gelangen. Dazu wird ein Filter eingerichtet, und mit Merkmalen (etwa dem Link zu einer bestimmten Spam-Viagra-Seite) füttert, die aus anderen Spam-Emails bekannt sind. Diese Methode hat den Nachteil, dass sich Spam-Emails im Laufe der Zeit wandeln, so dass man von Zeit zu Zeit die Filterkriterien anpassen muss, außerdem riskiert man, wenn man die Filter nicht zielgenau setzt, dass gelegentlich erwünschte Kommentare vom Filter gelöscht werden. Je nach Webseite, die geschützt werden soll und die Art der Spamattacken, denen sie ausgesetzt ist, kann es einfach oder schwieriger sein, die richtigen Filter herauszufinden.

Wer sich nicht mit dem Filtern beschäftigen möchte, kann statt dessen ein CAPTCHA benutzen, um Spammer abzuhalten. Dazu muss der Nutzer, der einen Kommentar eingeben will, zusätzlich eine Testfrage beantworten, um zu beweisen, dass er ein Mensch und kein Spambot ist. Das CAPTCHA hat die Nachteile, dass erstens alle ehrlichen Nutzer auch eine Extrafrage benatworten müssen (was einen, wenn auch geringen Nervaufwand bedeutet) und dass eine inhaltliche Prüfung nicht stattfindet. Ein menschlicher Nutzer könnte also die Frage beantworten, um anschließend per Hand Schimpfworte oder Werbelinks einzugeben. In dem Fall könnte man aber dann versuchen, ein CAPTCHA und einen Filter gleichzeitig zu verwenden. Die Erstellung eines CAPTCHA für ein Wordpress-Blog wird in einem eigenen Artikel beschrieben.

Problemlösung

Die meisten Bots haben allerdings auch eine Schwachstelle, nämlich den Wunsch, Links zu ihren Werbeseiten in ihre "Artikel" einzubringen. Diese enthalten zumeist den Bestandteil "http://" für die Linkadresse, der charakteristisch für Spamnachrichten ist.

Am Besten wäre es, wenn die Blogsoftware Kommentare, die definitiv unerwünscht sind, gar nicht erst entgegen nehmen würde. Da die Software dies automatisch entscheiden muss, sollten dafür eindeutige Kriterien vorliegen, da alle Kommentare, die das Kriterium erfüllen, verweigert werden. Eindeutige Kriterien können bestimmte Textfragmente wie "Online Poker spielen", "watch nude girl" sein oder Absender-IP-Adressen, von denen man weiß, dass von Ihnen ständig unerwünschte Nachrichten kommen. Mit einer kleinen Ergänzung im Programmcode kann man solche Kriterien festlegen.

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:

 # autoren-namen-bestandteile blockieren
 $my_author_blacklist = Array ('Name1','Name2','Name3');
 for($a=0; $a<count($my_author_blacklist); $a++)
 {
   if (stristr($comment_author,$my_author_blacklist[$a]) != ) die();
 }
 # autoren-email-bestandteile blockieren
 $my_email_blacklist = Array ('@example.com','@abc.def','name@');
 for($a=0; $a<count($my_email_blacklist); $a++)
 {
   if (stristr($comment_author_email,$my_email_blacklist[$a]) != ) die();
 }
 # autoren-url-bestandteile blockieren
 $my_url_blacklist = Array ('example.com','http://www.abc.def','Wort');
 for($a=0; $a<count($my_url_blacklist); $a++)
 {
   if (stristr($comment_author_url,$my_url_blacklist[$a]) != ) die();
 }
 # content-bestandteile blockieren
 $my_content_blacklist = Array ('Wort1','Wort2','Wort3');
 for($a=0; $a<count($my_content_blacklist); $a++)
 {
   if (stristr($comment_content,$my_content_blacklist[$a]) != ) die();
 }
 # ip-adresse blockieren
 $my_ip_blacklist = Array ('a.b.c.d','aa.bb.cc.dd','aaa.bbb.ccc.ddd');
 $check_comment_ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
 if (in_array($check_comment_ip,$my_ip_blacklist)) die();
 if (substr($check_comment_ip,0,4) == 'a.b.') die();

5. Bei diesem zusätzlichen Programmcode handelt es sich um 5 verschiedene Optionen, die bestimmte Aspekte eines Kommentars erkennen und ihn blockieren. Diese können parallel zueinander verwendet werden. Falls Du einen Aspekt nicht als Filterkriterium benötigst, kannst du den kompletten Codeblock für diesen Aspekt löschen. Die rot markierten Begriffe musst Du durch die Begriffe ersetzen, die du blockiert haben möchtest. Wenn Du mehr oder weniger als die drei Beispielbegriffe in einer Kategorie filtern willst, kannst Du Begriffe zwischen den Klammern ergänzen oder löschen. Wichtig ist, dass alle Begriffe in einfachen Anführungszeichen stehen und durch Kommata getrennt sind.

6. 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.

7. Besuche Dein Blog und versuche, einen Kommentar zu schreiben, der auch weiterhin erlaubt sein soll. Der Kommentar sollte ganz normal behandelt werden (es hängt von deinen Blogeinstellungen ab, ob der sofort sichtbar ist, oder ob er erst moderiert werden muss). Wenn es einen Fehler gibt, 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.

8. Wenn der vorige Schritt geklappt hat, versuche nun eine "verbotene" Nachricht zu schreiben, die du künftig automatisch abweisen willst. Nach dem Absenden der Nachricht sollte der Bildschirm einfach weiß bleiben und der Kommentar sollte nicht im Blog ankommen. Mit dem "Zurück"-Button des Browsers kommst du von der weißen Seite wieder zurück zur Eingabeseite.

9. Fertig. Du kannst die Arbeitsdatei in Zukunft immer weiter anpassen, falls wieder neue unerwünschte Nachrichten durchkommen, für die du noch keinen Filter definiert hast.

Was muss ich beachten?

Die Filter reagieren auf Wortbestandteile. Das heisst wenn du 'sex' verbietest werden auch Texte über (die englische Grafschaft) "Essex" gandenlos abgewiesen (es ist also besser ' sex ' zu verbieten. Lediglich die IP-Adresse wird auf genaue Übereinstimmung getestet. Um einen ganzen IP-Bereich zu sperren, dient die Zeile if (substr($check_comment_ip,0,4) == 'a.b.') die('');. Sie sperrt aber oft gleich hunderte oder tausende von (vielleicht unschuldigen) Adressen aus. Wenn du das nicht brauchst, kann die Zeile gelöscht werden. Falls du mehrere IP-Bereiche sperren willst, kannst du zusätzliche Zeilen der gleichen Art ergänzen. Die letzte Zahl (hier die "4") der jeweiligen Programmzeile muss dann jeweils der Länge des Vergleichstexts (hier das "a.b.") entsprechen.

  • Die Filter beachten Groß- und Kleinschreibung. Gegebenenfallw brauchst Du also ein Filterkriterium für ' wort ' und für ' Wort '.
  • Der weiße Bildschirm erscheint auf den ersten Blick etwas störend, allerdings erscheint dieser ja nur bei abgewiesenen Nachrichten. Diese werden häufig automatisch von Computerprogrammen oder von böswilligen Besuchern eingestellt. Wer dennoch möchte, kann alle die(''); - Befehle mit einer Nachricht ergänzen, etwa die('Das darfst Du hier nicht eingeben.');
  • 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 genannte Datei ist für die Entgegennahme der Kommentare zuständig. Der die('');-Befehl beendet den Programmablauf sofort, wenn einer der Filter anschlägt. Das führt zu einem weißen Bildschirm, da Wordpress ja mitten in der Ausführung abgebrochen wurde und auch nicht mehr dazu kommt, eine Ausgabe zu generieren. Allerdings kommt Wordpress auch nicht dazu, den Kommentar abzuspeichern - er "verpufft" einfach. Wenn man die Filterkriterien so setzt, dass man nur absolut unerwünschte Kommentare blockt, werden auch nur die Schreiber solcher Kommentare mit dem weißen Bildschirm "bestraft" und das sind in vielen Fällen ohnehin automatische Spamprogramme.