Wiki-Spam unterdrücken

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

(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 Spambeiträge in meinem Wikimedia-Wiki verhindern?

Wichtige Hinweise Die beschriebene Lösung ist eine programmiertechnische Lösung und bezieht sich auf die Mediawikiversion 1.6.8, die mittlerweile veraltet ist. Andere ältere oder neuere Versionen werden vermutlich ähnlich funktionieren. Der Zeitaufwand sollte deutlich weniger als eine halbe Stunde betragen. Dafür werden zukünftig die meisten unerwünschten Nachrichten automatisch abgewiesen, so dass man diese Zeit schnell wieder eingespart hat.

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. Wenn Du nicht sicher bist, ob du dieses Risiko eingehen möchtest, unterlasse bitte alle Änderungen und führe bitte keinen der genannten Schritte durch

Einleitung

Die Wikisoftware von Mediawiki ist sehr beliebt (so basiert insbesondere das bekannte Wikipedia auf dieser Wikisoftware) und verbreitet und kann kostenlos heruntergeladen und auf einer eigenen Internetpräsenz genutzt werden. Innerhalb des Wikis haben Besucher die Möglichkeit, Artikel neu zu erstellen, zu ändern oder Kommentare zu hinterlassen. Leider missbrauchen einige Benutzer und automatische Spambots die Mitarbeitsfunktionalität gezielt, um ungewünschte Botschaften und insbesondere ungewollte Werbung zu verbreiten. Wenn man diese ungewollten Botschaften nicht unterdrückt, wird die Qualität des Wikis deutlich gemindert da zwischen dem ganzen "Müll" wichtige Beiträge schwerer auffindbar sind. Schlimmer noch scheuen sich die Bots nicht bestehende Artikel einfach mit Werbebotschaften zu überschreiben.

Der Betreiber des Wikis muss in vielen Fällen per Hand entscheiden, ob ein Artikel erwünscht ist oder nicht. Glücklicherweise erlaubt die Wikisoftware mit wenigen Handgriffen das Löschen von Artikeln oder das Wiederherstellen des Originalzustands eines Artikels. Auch lassen sich unerwünschte IP-Adressen künftig unterdrücken. Bei manchen Wikis sammeln sich allerdings täglich hunderte von Spameinträgen, 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.

Wenn ein Wikibetreiber ins Visir eines Spambotnetzes geraten ist, werden Spameinträge teilweise im Minutentakt eingetragen. Das manuelle Rücksetzen wird damit sehr zeitaufwändig, zumal Bots nicht schlafen müssen. Auch das Sperren von IP-Adressen hilft nur wenig, da oft jeder Eintrag mit einer anderen IP-Adresse gemacht wird. Das Erstellen einer Abwehrmaßnahme gegen Spameinträge mit den hier beschriebenen Methoden, kostet etwas Zeit, kann aber im Gegenzug im Idealfall ein Blog in der Praxis komplett von Spamattacken befreien.


Einfache Lösung

Die Wikisoftware selbst bietet im Unterordner "includes" eine Datei mit dem Namen "Defaultsettings.php". Diese hat etwa in Zeile 1400 den Eintrag

 $wgSpamRegex = false;

Wenn man diesen Eintrag ändert zu

 $wgSpamRegex = "|http://|";

dann werden künftig alle Einträge, die die Zeichenkette "http://" enthalten abgewiesen. Wenn man andere Textbestandteile statt "http://" filtern will, kann man das in dem Eintrag entsprechend ändern. Die Zeichen "|" am Anfang und Ende sind dabei beizubehalten.

Diese Methode hat allerdings den Nachteil, dass künftig alle Beiträge, die "http://" als Bestandteil haben verboten sind. Wer einen solchen Beitrag dennoch eingibt, landet auf einer speziellen Hinweisseite, auf der das Wikiprogramm den Autor darauf hinweist, dass sein gesamter Text wegen Spamverdacht nicht übernommen werden konnte. Es ist also fortan überhaupt nicht mehr möglich, Artikel zu schreiben, die Links auf externe Webseiten zulassen. Wer damit leben kann, ist an dieser Stelle fertig:

1. Datei "Defaultsettings.php" vom Server herunterladen (mit einem FTP-Programm)

2. Zeile "$wgSpamRegex = false;" suchen und wie beschrieben ändern und speichern.

3. Datei "Defaultsettings.php" wieder auf den Server hochladen (mit einem FTP-Programm)

4. Testen, ob der Filter wie beabsichtigt funktioniert


Nutzerbasierte Lösung

Etwas weniger im Sinne der Wikiprogrammierer ist es, mitten im Programm eine Änderung einzubauen, die künftig als Filter dient. Dies hat jedoch den Vorteil, dass man einen Filter nach eigenen Vorstellungen an der Stelle ins Programm einbaut, bevor ein Artikel gespeichert wird. In der Wikisoftware geschieht das Speichern in der Datei "EditPage.php", die ebenfalls im Unterordner "includes" zu finden ist. Dort setzen wir einen Filter direkt vor den wikieigenen Filter. Dieser eigene Filter vunterscheidet sich von der oben vorgestellten einfachen Lösung dadurch, dass er eingeloggten Nutzern (also solchen die einen Nutzeraccount besitzen) die Benutzung der Phrase "http://" erlaubt, während Bots und anderen Nutzern ohne Namen, die Benutzung verweigert wird. Darüber hinaus kann man sich außerdem über Email über verworfene Änderungen informieren lassen. Wichtig ist dabei, dass in der Datei "Defaultsettings.php" die Zeile "$wgSpamRegex = false;" stehen bleibt, also die im vorigen Abschnitt beschrieben einfache Änderung nicht gemacht wird.

1. Lade die Datei "EditPage.php" aus dem Unterordner "includes" 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 470):

 # Check for spam   
 if ( $wgSpamRegex && preg_match( $wgSpamRegex, $this->textbox1, $matches ) ) {
 $this->spamPage ( $matches[0] );
 wfProfileOut( "$fname-checks" );
 wfProfileOut( $fname );
 return false;
 }

4. Füge vor diesen Zeilen folgende Zeilen ein:

 #Mein Spambot Filter
  $blockphrase = '|http://|';
  $test_if_user = $wgUser->mName;
  if ($test_if_user == '' && preg_match($blockphrase, $this->textbox1, $matches ) )
  {
    $geblocktertext = $this->textbox1;
    #mail("meineemail@example.com","Wiki - Spam abgewehrt",$geblocktertext);
    $this->spamPage ( 'Nur eingeloggte Nutzer dürfen folgenden Text eingeben:"'.$matches[0].'"');
    wfProfileOut( "$fname-checks" );
    wfProfileOut( $fname );
    return false;
  }

5. Um eine andere Phrase als "http://" zu filtern, muss man die Zeile $blockphrase = '|http://|'; andern zum Beispiel in $blockphrase = '|GanzbösesSchimpfwort|';

Wenn in der Zeile #mail("meineemail@example.com","Wiki - Spam abgewehrt",$geblocktertext); das führende "#"-Zeichen entfernt wird, wird bei jeder gelockten Nachricht eine Email an meineemail@example.com (hier natürlich die eigene email-Adresse eintragen!!) mit dem Titel Wiki - Spam abgewehrt (kann man ändern wenn man mag) geschickt, die außerdem die abgewiesene Nachricht enthält (Wenn man $geblocktertext in der Zeile durch "" ersetzt, erhält man den abgewiesenen Text nicht als Bestandteil der email.

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 Wiki und versuche, einen Beitrag zu schreiben, der auch weiterhin erlaubt sein soll. Der Beitrag sollte ganz normal behandelt werden. Wenn es einen Fehler gibt, hast du in der Arbeitsdatei etwas falsch gemacht. Lade dann die Sicherheitskopie wieder hoch, damit dein Wiki 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. Sei dabei nicht im Wiki angemeldet. Nach dem Absenden der Nachricht sollte eine Benachrichtigung des Wikis kommen und der Artikel sollte nicht geändert sein. Mit dem "Zurück"-Button des Browsers kommst du von der Benachrichtigung wieder zurück zur Eingabeseite. Wenn es einen Fehler gibt, hast du in der Arbeitsdatei etwas falsch gemacht. Lade dann die Sicherheitskopie wieder hoch, damit dein Wiki wieder korrekt funktioniert. Gehe dir obigen Schritte dann noch einmal durch, suche den Fehler und versuche es erneut.

9. Wenn der vorige Schritt geklappt hat, versuche nun eine "verbotene" Nachricht zu schreiben, die du künftig automatisch abweisen willst. Sei dabei im Wiki angemeldet. Der Beitrag sollte ganz normal behandelt werden. Wenn es einen Fehler gibt, hast du in der Arbeitsdatei etwas falsch gemacht. Lade dann die Sicherheitskopie wieder hoch, damit dein Wiki wieder korrekt funktioniert. Gehe dir obigen Schritte dann noch einmal durch, suche den Fehler und versuche es erneut.

10. Fertig.

Was muss ich beachten?

Der Filter reagiert 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.

  • Der Benachrichtigungsseite des Wikis erscheint auf den ersten Blick etwas störend, allerdings erscheint diese ja nur bei abgewiesenen Nachrichten. Diese werden häufig automatisch von Computerprogrammen oder von böswilligen Besuchern eingestellt.
  • 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 Wiki 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., 8. und 9. 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 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 korrekt heißt.

Wieso funktioniert das?

Die genannte Datei ist für die Entgegennahme der Änderungen von Artikeln (auch Diskussionsbeiträge zählen als Artikelseiten) zuständig. Der Filter benutzt ein eigenes Kriterium, um damit die Spamabwehrfunktion des Wikis künstlich zu aktivieren. Das führt zu einer Benachrichtigungsseite und das Wiki führt die verbotene Änderung dabei nicht durch. Wenn man die Filterkriterien so setzt, dass man nur absolut unerwünschte Artikelbestandteile blockt, werden auch nur die Schreiber solcher Artikel mit dem Benachrichtigungsbildschirm "bestraft" und das sind in vielen Fällen ohnehin automatische Spamprogramme.