Extension:SpamBlacklist

From mediawiki.org
This page is a translated version of the page Extension:SpamBlacklist and the translation is 100% complete.
Cette extension est fournie avec MediaWiki 1.21 et supérieur. Ainsi vous n'avez pas besoin de la télécharger à nouveau. Néanmoins, vous devez encore suivre les autres instructions fournies.
Manuel des extensions MediaWiki
SpamBlacklist
État de la version : stable
Implémentation Action de page
Description Fournit un filtrage anti-spam basé sur les expressions régulières
Auteur(s) Tim Starlingdiscussion
Dernière version Mises à jour continues
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki 1.31+
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
README
  • $wgBlacklistSettings
  • $wgLogSpamBlacklistHits
  • sboverride
  • spamblacklistlog
Téléchargements trimestriels 57 (Ranked 94th)
Utilisé par les wikis publics 4,601 (Ranked 180th)
Traduire l’extension SpamBlacklist sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue
Une proposition pour renommer cette extension est discutée sur tâche T254649.

L'extension SpamBlacklist empêche les modifications qui contiennent des URLs dont le domaine correspond à des motifs d'expressions régulières définis dans des fichiers ou des pages spécifiques, ainsi que la création de comptes par des utilisateurs qui fournissent des adresses courriel spécifiques.

Quand un contributeur tente d'enregistrer une page, l'extension vérifie le texte par rapport à la liste (potentiellement très longue) des noms d'hôtes interdits. Si une correspondance est trouvée, l'extension affiche un message d'erreur à l'utilisateur et refuse l'enregistrement de la page.

Installation et configuration

Installation

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé SpamBlacklist dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SpamBlacklist
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'SpamBlacklist' );
    
  • Configurez la liste de blocage à votre convenance
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Définir la liste de blocage

Les pages locales suivantes sont toujours utilisées, quelque soit les sources supplémentaires listées :

La source supplémentaire par défaut de la liste de blocage des URL interdites est la Liste noire anti-spam de Meta-Wiki. Par défaut l'extension utilise cette liste et la recharge toutes les 10 à 15 minutes. Pour beaucoup de wikis, l'utilisation de cette liste sera suffisante pour bloquer la plupart des tentatives de spam. Cependant, étant donné que la liste de blocage Wikimedia est utilisée par un groupe diversifié de grands wikis avec des centaines de milliers de liens externes, elle est relativement conservatrice dans les liens qu'elle bloque.

La liste de blocage du spam Wikimedia ne peut être modifiée que par les administrateurs ; mais vous pouvez suggérer des modifications à la liste de blocage sur m:Talk:Spam blacklist.

Vous pouvez ajouter d'autres URLs à rejeter dans votre propre wiki. Affichez-les dans la variable globale $wgBlacklistSettings de LocalSettings.php . Voir les exemples ci-dessous.

$wgBlacklistSettings est un tableau à deux niveaux. L'accès au premier niveau se fait avec la clé spam ou email. Ils incluent un tableau dont chaque valeur comprend soit une URL, un nom de fichier ou un chemin de base de données.

Si vous utilisez $wgBlacklistSettings dans "LocalSettings.php", la valeur par défaut de "[[m:Spam blacklist]]" ne sera plus utilisée - si vous souhaitez que cette liste de blocage soit accessible, vous devrez l'ajouter manuellement, voir les exemples ci-dessous.

En spécifiant un emplacement dans la base de données, vous pouvez récupérer la liste de blocage à partir d'une page de votre wiki.

Le format de la référence en base de données est >DB: [db name] [title]. [db name] doit correspondre exactement à la valeur de $wgDBname dans LocalSettings.php . Vous devez créer le nom de page [title] nécessaire, dans l'espace de noms par défaut de votre wiki. En faisant cela, il vous est fortement recommandé de protéger la page contre toute modification générale. Outre le danger évident que quelqu'un puisse ajouter une expression régulière qui correspond à tout, veuillez noter qu'un attaquant ayant la capacité de saisir des expressions régulières arbitraires peut être en mesure de générer des Erreurs de segmentation dans la Bibliothèque PCRE (Perl Compatible Regular Expressions).

Exemples

Si vous souhaitez par exemple utiliser la liste de blocage de spam de la Wikipedia anglophone en plus de celle standard de Meta-Wiki, vous pouvez appeler ce qui suit dans LocalSettings.php , APRÈS l'appel de wfLoadExtension( 'SpamBlacklist' ); :

$wgBlacklistSettings = [
	'spam' => [
		'files' => [
			"https://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1",
			"https://en.wikipedia.org/w/index.php?title=MediaWiki:Spam-blacklist&action=raw&sb_ver=1"
		],
	],
];

Voici un exemple d'un ensemble entièrement local de listes de blocage : l'administrateur utilise update script pour générer un fichier local appelé « wikimedia_blacklist » qui contient une copie de la liste noire de Meta-Wiki et possède une liste de blocage supplémentaire sur la page « My spam block list » du wiki :

$wgBlacklistSettings = [
	'spam' => [
		'files' => [
			"$IP/extensions/SpamBlacklist/wikimedia_blacklist", // Liste de Wikimedia
			// base de données      titre
			'DB: wikidb My_spam_block_list',    
		],
	],
];

Journaux

Par défaut, l'extension n'enregistre pas l'ouverture des pages dans le journal des spams en liste noire. Pour autoriser la journalisation, intialisez $wgLogSpamBlacklistHits = true;. Vous pouvez utiliser le droit utilisateur spamblacklist pour contrôler l'accès aux jounaux. Chaque utilisateur connecté peut consulter les journaux par défaut.


Problèmes

Limites de traçabilité arrière

Si vous rencontrez des problèmes avec le liste de blocage, vous pouvez augmenter la limite de traçabilité arrière. Mais d'un autre côté, cela peut réduire votre sécurité à propos des attaques DOS [1] car la limite de traçabilité arrière limite également les performances :

// Augmenter la limite mémoire pour les expressions régulières compatibles Perl
// (PHP 5.3.x par défaut, 1000K, est trop bas pour SpamBlacklist)
ini_set( 'pcre.backtrack_limit', '8M' );

Wikis renforcés

SpamBlacklist n'autorisera pas l'édition si le wiki est renforcé. Le renforcement inclut de limiter open_basedir afin que curl ne soit pas sur le chemin et la définition de allow_url_fopen=Off sur php.ini.

Dans le cas des wikis renforcés, SpamBlacklist génère une exception si Guzzle essaie de faire une requête sur le réseau. Le message d'exception de Guzzle est : GuzzleHttp nécessite cURL, le paramètre ini allow_url_fopen ou un gestionnaire HTTP personnalisé.

Liste sécurisée

Une liste de sécurité correspondante peut être maintenue en tenant à jour la page MediaWiki:Spam-whitelist. Ceci est intéressant si vous utiliser une liste de blocage venant d'un autre wiki et que vous voulez redéfinir certaines entrées. Les wikis Wikimedia par exemple, utilisent quelques fois la liste de blocage anti-spam pour des motifs autres que la défense contre le spam.

On peut s'interroger sur l'efficacité des listes de blocage anti-spam de Wikimedia quand elles sont utilisées sur des wikis tiers. Certains spams pourraient cibler uniquement les wikis Wikimedia, ou uniquement les wikis tiers, ce qui rendrait la liste noire de Wikimedia peu utile aux wikis tiers dans ce cas. En outre, certains wikis tiers pourraient préférer que les utilisateurs soient autorisés à citer des sources que Wikipédia n'autorise pas. Parfois, ce qu'un wiki considère comme du spam inutile, un autre wiki peut le considérer comme utile.

Les utilisateurs ne comprennent pas toujours que, lorsqu'un lien est rejeté en tant que lien de spam, cela ne signifie pas nécessairement que le wiki sur lequel ils font leur édition a particulièrement choisi de bannir cette URL. C'est pourquoi les administrateurs système du wiki peuvent vouloir modifier Manual:System messages sur MediaWiki:Spamprotectiontext et (ou) MediaWiki:Spamprotectionmatch sur votre wiki pour inviter les utilisateurs à faire des suggestions sur MediaWiki talk:Spam-whitelist pour les pages à faire ajouter par un Manuel:Administrateurs à la liste de sécurité. Par exemple, vous pourriez indiquer pour MediaWiki:Spamprotectiontext :

Le texte que vous avez voulu enregistrer a été bloqué par le filtre anti-spam. Ceci est probablement dû à un lien qui se trouve vers un site externe de la liste noire. {{SITENAME}} maintient [[MediaWiki:Spam-blacklist|sa propre liste de blocage]] ; cependant, la plupart des blocages sont effectués au moyen de la [[metawikimedia:Spam-blacklist|Liste de blocage de Meta-Wiki]], donc ce blocage ne doit pas nécessairement être interprété comme une indication que {{SITENAME}} a pris lui-même la décision de bloquer ce texte particulier (ou cette URL). Si vous souhaitez que ce texte (ou cette URL) soit ajouté à [[MediaWiki:Spam-whitelist|la liste locale anti-spam sécurisée]], afin que les utilisateurs de {{SITENAME}} ne soient pas empêchés de l'ajouter aux pages, veuillez faire votre demande sur [[MediaWiki talk:Spam-whitelist]]. Un [[Project:Sysops|administrateur système]] donnera sa décision ensuite sur cette page en indiquant si elle doit être considérée comme sécurisée.

Notes

  • Cette extension examine uniquement les nouveaux liens externes ajoutés par les contributeurs du wiki. Pour contrôler les agents utilisateurs, ajoutez Akismet Étant donné que les différents outils de lutte anti-spam sur MediaWiki utilisent différentes méthodes pour détecter les abus, il est préférable de combiner les mesures de protection.
  • Les utilisateurs avec sboverride peuvent forcer la liste de blocage et ajouter sur les pages des liens bloqués. Par défaut ce droit n'est attribué qu'aux robots.

Utilisation

Syntaxe

Si vous souhaitez créer une liste de blocage par vous-même, ou modifier une liste existante, voici la syntaxe :

Tout ce qui suit le caractère '#' sur une ligne est considéré comme du commentaire. Toutes les autres chaînes sont des parties de l'expression régulière qui ne s'appliquent qu'aux URLs.

Notes
  • N'ajoutez pas « http:// »; cela va échouer car l'expression régulière s'applique sur l'URL qui suit « http:// » (ou « https:// »).
  • De plus "www" est inutile car l'expression régulière couvre tous les sous-domaines. En fournissant explicitement « www\. » vous pouvez désigner des sous-domaines particuliers.
  • les ancres (?<=//|\.) et $ correspondent au début et à la fin du nom du domaine et non pas à ceux de l'URL. Le caractère d'ancrage ^ dans l'expression régulière, n'aura aucune utilité.
  • les barres obliques n'ont pas besoin d'être échappées par des barres inverses, cela sera fait automatiquement par le script.
  • Les fonctions de liste noire concernant le spam ont la priorité sur les filtres anti-abus, donc les domaines qui sont en liste noire n'apparaissent pas dans les entrées du journal des filtres anti-abus (special:abuselog), et ne sont présents que dans (special:log/spamblacklist).
Exemple

La ligne suivante bloquera toutes les URL contenant la chaîne « example.com », sauf lorsqu'elle est immédiatement précédée ou suivie d'une lettre ou d'un chiffre.

\bexample\.com\b

Ceux-ci sont bloqués :

  • http://www.example.com
  • http://www.this-example.com
  • http://www.google.de/search?q=example.com

Ceux-ci ne sont pas bloqués :

  • http://www.goodexample.com
  • http://www.google.de/search?q=example.commodity

Performances

L'extension crée une seule déclaration d'expression régulière qui ressemble à /https?:\/\/[a-z0-9\-.]*(ligne 1|ligne 2|ligne 3|....)/Si (où toutes les barres obliques à l'intérieur des lignes sont automatiquement échappées). Il enregistre cela dans un petit fichier « chargeur » pour éviter de ramener tout le code à chaque affichage de page. Les performances de l'affichage des pages ne seront pas affectées même si vous n'utilisez pas de cache de bytecode bien que l'utilisation d'un cache soit fortement recommandée pour toute installation MediaWiki.

La comparaison avec les expressions régulières ajoute un temps minime à l'enregistrement des pages (de l'ordre de 100ms dans nos essais). Néanmoins, le chargement du fichier de spam à partir du disque ou de la base de données et la construction des expressions régulières peuvent demander un certain temps en fonction de votre matériel. Si vous pensez qu'en activant cette extension le temps d'enregistrement est ralenti, essayez d'installer un cache compatible de bytecode. Cette extension mettra en cache les expressions régulières construites si un tel système est présent.

Si vous partagez un serveur et un cache avec plusieurs wikis, vous pouvez améliorer les performances de votre cache en modifiant getSharedBlacklists et clearCache dans SpamBlacklist_body.php pour utiliser $wgSharedUploadDBname (ou une base de données spécifique si vous n'avez pas de base de données de téléversement partagée) plutôt que $wgDBname . Assurez-vous de récupérer toutes les références ! Les expressions régulières des pages MediaWiki:Spam-blacklist et MediaWiki:Spam-whitelist sur chaque wiki seront encore appliquées séparément.

Liste des serveurs externes bloqués (RBL)

Dans sa forme standard, cette extension nécessite que la liste de blocage soit construite manuellement. Bien que les caractères joker des expressions régulières soient autorisés et qu'une liste de blocage créée sur un wiki puisse être réutilisée par de nombreux autres wikis, des efforts sont encore nécessaires pour ajouter de nouveaux modèles en réponse au spam ou supprimer les modèles qui génèrent des faux positifs.

Une grande partie de cet effort peut être réduite en complétant l'expression régulière de spam avec des listes de domaines connus trouvés dans les courriels indésirables. L'expression régulière détectera les modèles courants (comme « casino- » ou « -viagra ») tandis que le serveur de liste de blocage externe se mettra à jour automatiquement avec les noms des sites spécifiques promus par le spam.

Dans la fonction filter() de includes/SpamBlacklist.php, vers le milieu du fichier, vous trouverez les lignes :

       # chercher la correspondance
       wfDebugLog( 'SpamBlacklist', "Checking text against " . count( $blacklists ) .
           " regexes: " . implode( ', ', $blacklists ) . "\n" );

Directement avant cette section (qui effectue le test réel des expressions régulières sur les liens extraits), il est possible d'ajouter du code supplémentaire pour vérifier les serveurs RBL externes [2] :

        # faire les contrôles RBL
        $retVal = false;
        $wgAreBelongToUs = ['l1.apews.org.', 'multi.surbl.org.', 'multi.uribl.com.'];
        foreach( $addedLinks as $link ) {
              $link_url=parse_url($link);
              $link_url=$link_url['host'];
              if ($link_url) {
                   foreach( $wgAreBelongToUs as $base ) {
                        $host = "$link_url.$base";
                        $ipList = gethostbynamel( $host );
                        if( $ipList ) {
                           wfDebug( "RBL match: Hostname $host is {$ipList[0]}, it's spam says $base!\n" );
                           $ip = wfGetIP();
                           wfDebugLog( 'SpamBlacklistHit', "$ip caught submitting spam: {$link_url} per RBL {$base}\n" );
                           $retVal = $link_url . ' (blacklisted by ' . $base .')';
                           wfProfileOut( $fname );
                           return $retVal;
                        }
                   }
              }
        }

        # si aucun serveur RBL n'est détecté, continuer normalement avec le test des expressions régulières

Cela garantit que, si une modification contient des URLs provenant de domaines de spam déjà bloqués, une erreur est renvoyée à l'utilisateur indiquant quel lien ne peut pas être enregistré à cause de sa présence dans une liste de blocage de spam externe. Si rien n'est trouvé, les tests d'expression régulière restants peuvent s'exécuter normalement, de sorte que tout « modèle suspect » spécifié manuellement dans l'URL puisse être identifié et bloqué.

Notez que les serveurs RBL répertorient uniquement les noms de domaine de base - pas le chemin complet de l'URL - donc http://example.com/casino-viagra-lottery.html déclenchera RBL uniquement si "example.com" lui-même a été bloqué nominativement par le serveur externe. L'expression régulière, cependant, serait capable de bloquer n'importe quel texte de l'URL et du chemin, de « example » à « lottery » et tout le reste. Les deux approches comportent un certain risque de faux positifs - l'expression régulière à cause de l'utilisation d'expressions génériques, et le RBL externe car ces serveurs sont souvent créés à d'autres fins - comme le contrôle des spams abusifs - et peuvent inclure des domaines qui ne sont pas « en soi » concernés par le spam des commentaires de forum, du wiki, du blog ou du livre d'or.

Autres outils pour combattre le spam

Vous trouverez différents manuels utiles sur mediawiki.org qui vous permettrons de combattre le spam et d'autres types de vandalisme :

Les autres extensions anti-spam et anti-vandalisme comprennent :

Références