Blockadeliste

Administratoren

Die Blockadeliste ist eine von mehreren Sicherheits-Maßnahmen, die unternommen werden können, um Ihr Wiki vor Spam und anderen unwillkommenen Beiträgen zu schützen.

Unglücklicherweise macht die offene Editierbarkeit vieler Wikisysteme sie zu attraktiven Zielen von "Link-Spam" oder "Wiki-Spam", in denen Verweise auf Seiten hinzugefügt werden mit dem Bestreben, Suchmaschinen-Rankings zu verbessern oder die Zugriffszahlen auf andere Seiten zu erhöhen. Viele Linkspammer haben sogar automatisierte Systeme entwickelt, die Sites finden, welche Besuchern Eingaben erlauben und die dann diese Sites mit unerwünschten Links zu überfluten versuchen. Dazu kommt, und damit ist noch schwerer umzugehen, nakter Wiki-Vandalismus, wo unsinnige Veränderungen vorgenommen werden oder sogar ganze Seiten ausgetauscht werden.

Die bei weitem beste Gegenmaßnahme gegen Wiki-Spam ist, die Bearbeitbarkeit durch Passwörter einzuschränken (siehe Passwörter und Passwörter verwalten). Erfahrungen haben gezeigt, dass Passwörter effektiv sein können, sogar, wenn das Passwort vielen bekannt ist, und sogar, wenn das Passwort in der Site veröffentlicht wird. Allerdings gibt es viele Fälle, in denen der Einsatz von Passwörtern eine Behinderung darstellen würden, in diesen Fällen wird lieber eine Form von blockierenden Listen eingesetzt.

Blockadelistengrundlagen

Eine Blockadeliste ist eine Liste von IP-Adressen, Wendungen und regulären Ausdrücken, die davon abgehalten werden, in Wikiseiten eingefügt zu werden. PmWiki wird mit einer eingebauten Blocklist-Fähigkeit ausgeliefert; Blocksisten können eingeschaltet werden durch das Einfügen der folgenden Zeile in die local/config.php:

$EnableBlocklist = 1;

Das weist PmWiki an, die SiteAdmin.Blocklist-Seite und die "SiteAdmin.Blocklist-Farm"-Seite zu scannen (und möglicherweise noch andere Seiten — siehe unten), um nach Wendungen und IP-Adressen zu suchen, die vom Veröffentlichen in der Site ausgeschlossen werden sollen.

Blockieren über Wörtern oder Wendungen

Die einfachste Form etwas zu blockieren ist einfach eine Zeile einzufügen, die "block:" enthält, gefolgt von einem Wort oder einer Wendung, das oder die von der Veröffentlichung ausgeschlossen werden soll. Zum Beispiel würde eine Zeile wie

block:spam.com

in SiteAdmin.Blocklist jegliche Veröffentlichung, die den String "spam.com" (groß- oder kleingeschrieben) irgendwo im Text enthält, blockieren.

Blockieren über IP-Adressen

Manchmal möchten wir Veröffentlichungen einschränken, die von bestimmten IP-Adressen oder -Adressbereichen kommen, die als Quelle von Wiki-Spam bekannt sind. Wenn eine Blocklist-Seite eine IP-Adresse der Form "a.b.c.d" oder "a.b.c.*" enthält, werden jegliche Veröffentlichungen, die von dieser Adresse oder diesen Adressen kommen, blockiert.

Versuche die Maus über den Autorennamen in der "Versionen"-Seite zu halten, um die IP-Adresse eines Autors herauszufinden.

Blockieren über reguläre Ausdrücke

Blockieren von einfachen Wörtern kann manchmal Schwierigkeiten erzeugen, ein einfaches "block:zial" beispielsweise würde auch das Wort "Spezialist" blockieren. Für diese Fälle ist es oft hilfreich, reguläre Ausdrücke zu benutzen, wie in:

block:/\bcial\b/

Das heißt, blockiere "zial" nur, wenn es nicht mitten in einem längeren Wort steht. Der einleitende Schägstrich (/) nach "block:" weist PmWiki an, einen regulägen Ausdruck auszuwerten, anstatt einen einfachen Stringabgleich zu machen. (Blocklist benutzt PCRE oder "Perl Compatible Regular Expressions"; siehe http://php.net/manual/en/ref.pcre.php wegen weiterer Informationen.)

Regulärer Ausdruch zum blockieren von 'href'

Wenn man 'href' blockieren will, kann man den folgenden Ausdruck verwenden:

block:/[^\w\\]href\b/

welches 'href', aber weder '\href' noch 'toughref' blockiert.

Der reguläre Ausdruck kann folgendermaßen interpretiert werden: er passt auf jedes Zeichen, das weder ein Wortzeichen noch ein '\' ist, gefolgt von 'href', das mit einer Wortgrenze endet.

Autoren wissen lassen, warum sie blockiert wurden

In der Standardeinstellung sagt Blocklist den Autoren nur, dass eine bestimme Bearbeitung blockiert wurde, gibt aber keinen konkreten Grund für die Blockade an (z. B. die mißbilligte Wendung). Setzt man das Folgende in eine lokale Anpassungsdatei, wird auch der Grund für die Blockade angegeben:

Mehrere Blockadelisten verwalten

PmWiki gestattet die Berücksichtigung von Blocklist-Einträgen aus mehreren Seiten, indem die $BlocklistPages-Variable gesetzt wird. Im Standard ist $BlocklistPages auf "SiteAdmin.Blocklist" gesetzt, auch auf die automatisch herunterladbaren Blockadelisten wie unten beschrieben. PmWiki nutzt alle Einträge in allen Blockadelisten, um Wiki-Spam zu filtern. Setzt man einen Wert für $BlocklistPages, ändert das den Standard:

$BlocklistPages = array('Main.Blocklist', 'PmWikiDe.Blocklist');

Die Reihenfolge der Blockadelisten spielt keine Rolle — schlussendlich werden alle Blockadelisten-Seiten benutzt und die unblock:-Einträge werden bearbeitet, nachdem alle Blockadelisten-Seiten bearbeitet worden sind.

Automatisch bezogene Blockadelisten

Blockadelisten zu verwalten ist eine relativ einfache Angelegenheit, kann aber mit der Zeit ziemlich lästig werden. Mehrere Gruppen haben sich gebildet und verwalten "shared block lists", wo eine gemeinsame Blockadeliste für alle erreichbar gemacht wird. PmWikis Blockadelistenfähigkeit hat eingebaute Features, um solche gemeinsamen Listen automatisch herunterzuladen und upzudaten.

Wenn man ganz schnell mal Blockadelisten braucht, macht man die folgende Einstellung in local/config.php:

Das weist PmWiki an, nicht nur Blockadelisten auf der Site einzurichten, sondern sich auch selbst so zu konfigurieren, dass gut bekannte Blockadelisten wie MoinMaster automatisch empfangen und verwaltet werden. Diese lokalen Kopien werden in SiteAdmin.Blocklist-Chongqed und SiteAdmin.Blocklist-MoinMaster gespeichert und einmal pro Tag aufgefrischt (wie vom Wert von $BlocklistDownloadRefresh vorgegeben).

Um automatisch die SiteAdmin.Blocklist-Seite zu erhalten, die auf pmwiki.org benutzt wird, fügt man die folgende Einstellung zu local/config.php hinzu:

$BlocklistDownload["$SiteAdminGroup.Blocklist-PmWiki"] = array('format' => 'pmwiki');

Ignorieren bestimmer Einträge in einer Blockadeliste (unblock:)

Wenn man eine große Blockadeliste hat oder Blockadelisten, die von externen Sites automatisch aufgefrischt werden, kann es sein, dass manche Einträge unangemessen oder überempfindlich sind und legitimen Inhalt blockieren. In dem Fall kann ein Wiki-Administrator "unblock:" in einer Blockadelistenseite benutzen, um einen Eintrag zu ignorieren. Um "spam.com" zu erlauben, auch wenn eine andere Blockadeliste einen Blockadeeintrag dafür enthält, setze beispielsweise:

unblock:spam.com

Damit das funktioniert, muss das Wort oder die Wendung exakt die gleich sein wie in dem Original.

Rechte für Blockadelistenseiten

Generell möchte ein Administrator die SiteAdmin.Blocklist-Seite und alle anderen Blocklist-Seiten gegen Bearbeiten schützen, um unliebsame Änderungen an den Blockadelisten zu verhindern (siehe Passwörter). Da die meisten Seiten in der SiteAdmin-Gruppe standardmäßig gegen Bearbeiten geschützt sind, ist das kein Problem.

Administratoren möchten die Blockadelistenseiten vielleicht auch gegen Lesen schützen, damit der präzise Wortlaut der Wendungen und Worte bzw. die IP-Adressen nicht öffentlich bekannt werden. (Es liegt in der Natur der Blockadelisten, dass sie Ausdrücke oder Wendungen enthalten, die unangemessen oder offensive gegen Manchen sind.)

Alle automatisch bezogenen Seiten (s. o.) werden gegen Lesen geschützt außer vorm Administrator.

Detailierte Konfiguration automatisch heruntergeladener Blockadelisten

Automatisches herunterladen von Blockadelisteninformationen wird von dem $BlocklistDownload-Array kontrolliert. Ein Eintrag für MoinMaster könnte darin so aussehen:

$BlocklistDownload["$SiteAdminGroup.Blocklist-MoinMaster"] = array(
'format' => 'regex',
'refresh' => 86400);

Das heißt, die Blockadelistendaten werden von dem gegebenen Url in die SiteAdmin.Blocklist-MoinMaster-seite geladen, die Einträge sind reguläre Ausdrücke, und die Information wird alle 86.400 Sekunden (ein Tag) aufgefrischt.

Wenn 'refresh' weggelassen wird, wird die Seite in dem Zeitintervall aufgefrischt, das durch $BlocklistDownloadRefresh gegeben ist. Wenn 'format' weggelassen wird, wird angenommen, dass die Seite PmWiki-formatierte Einträge (wie oben beschrieben) enthält. Wenn 'url' weggelassen wird, wird die Information von einem Standardort auf der pmwiki.org-Site besorgt.

Um ein Auffrischen einer automatisch bezogenen Blockadeliste zu erzwingen, löscht man sie einfach — eine neue Version wird beim nächsten Blockadelistenscan installiert. Blockadelistenseiten werden bei jedem ?action=edit-Request auf Download geprüft.

Wenn man die Blockadelistenseiten in der config.php angibt, muss man auch die automatisch aufgefrischten Seiten aufführen, sonst werden sie nicht aufgefrischt oder erzeugt, selbst wenn man $EnableBlocklist = 10; benutzt.

Farmweite Blockadelisten

Eine Blockadeliste kann farmweit angewendet werden (siehe SharedPages). Nachdem die Seiten angelegt wurden, können sie in das Verzeichnis der Farm, shared.d, verschoben werden.

Blockadelistenvariablen

Die folgenden Variablen helfen, die Konfiguration von und Operationen auf Blockadelisten zu kontrollieren.

$EnableBlocklist
Auf einen von null verschiedenen Wert gesetzt, werden Blockadelisten auf dieser Site angeschaltet. Bei einem Wert von 10 oder höher werden Einträge für automatisch bezogenen StandardBlockadelisten hinzugefügt.
$EnableBlocklist = 1; # enable blocklists
$EnableBlocklist = 10; # auto-configure standard blocklists
$EnableWhyBlocked
Standardmäßig werden Autoren nicht über den Grund einer Blockade informiert, auf 1 gesetzt bekommen Autoren gesagt, welche Wendung oder IP-Adresse die Blockade verursacht hat.
$EnableWhyBlocked = 1; # give reasons for blocking
$BlocklistPages
Ein Array von Seiten, die auf Blockadelisteneinträge geprüft werden. Die Elemente des Arrays dürfen Seitenspezifische Variablen enthalten. Standard ist "SiteAdmin.Blocklist" plus alle automatisch bezogenen Blockadelistenseiten.
$BlocklistMessageFmt
definiert die Texte, die benutzt werden für jeden Typ von Blockade, die durchgeführt wird, wenn $EnableWhyBlocked gesetzt ist. Augenblicklich werden nur 'ip' und 'text' erkannt.
BlockedMessagesFmt['ip'] = "$[IP address blocked from posting]: ";
$BlockedMessagesFmt['text'] = "$[Text blocked from posting]: ";
$BlocklistDownload
Ein Array mit automatisch bezogenen Blockadelisten. Die Schlüssel des Arrays sind die Seiten, in denen die Blockadelisten gespeichert werden sollen, die Werte enthalten den Url, das Format und das Refresch-Intervall für die bezogene Blockadeliste.
  # Download the MoinMaster blocklist every twelve hours
  $BlocklistDownload["$SiteAdminGroup.Blocklist-MoinMaster"] = array(
    'url' => 'http://moinmaster.wikiwikiweb.de/BadContent?action=raw',
    'format' => 'regex',
    'refresh' => 43200);
  # Download a shared blocklist from pmwiki.org every day
  $BlocklistDownload["$SiteAdminGroup.Blocklist-Shared"] = array(
    'format' => 'pmwiki');
$BlocklistDownloadRefresh
Der Standardwert für das Refresch-Intervall für alle $BlocklistDownload-Einträge, die keine expliziten Angaben dazu enthalten.
# perform automatic downloads once per week by default
$BlocklistDownloadRefresh = 86400 * 7;
$BlocklistDownloadFmt
Das Format, das beim Speichern automatisch bezogener Blockadelisten benutzt wird.
$EnableBlocklistImmediate
Einige Kochbuchrezepte machen ein Seiten-Update mit Autoreneingabe, benutzen aber nicht die eingebaute Daten-Veröffentlichungs-Routinen. Wenn $EnableBlocklistImmediate gesetzt ist (Standard), und die aktuelle Aktion ist in BlocklistActions (s. u.) aufgelistet, wird ein sofortiger Blockadelisten-Scan des hereinkommenden Textes durchgeführt.
$BlocklistActions
Eine Liste von Aktionen, die eine sofortige Blockadelistenprüfung auslösen (siehe $EnableBlocklistImmediate oben).
# perform immediate checks for ?action=comment
$BlocklistActions['comment'] = 1;
# perform immediate checks for ?action=postdata
$BlocklistActions['postdata'] = 1;


Übersetzung von PmWiki.Blocklist Originalseite auf PmWikiDe.Blocklist - Rückverweise
Zuletzt geändert:
PmWikiDe.Blocklist am 08.06.2013
PmWiki.Blocklist am 08.06.2013