Extension:AbuseFilter

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:AbuseFilter and the translation is 96% complete.
Outdated translations are marked like this.
Other languages:
Deutsch • ‎Deutsch (Sie-Form)‎ • ‎English • ‎Türkçe • ‎català • ‎dansk • ‎español • ‎français • ‎galego • ‎magyar • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎sicilianu • ‎čeština • ‎български • ‎русский • ‎עברית • ‎سنڌي • ‎فارسی • ‎हिन्दी • ‎中文 • ‎日本語 • ‎粵語 • ‎한국어
Manuel des extensions MediaWiki
OOjs UI icon advanced.svg
AbuseFilter
État de la version : stable
AbuseFilter-Management.png
Implémentation Activité utilisateur , Page spéciale , API
Description Permet de placer des restrictions spécifiques basées sur des comportements sur le wiki.
Auteur(s)
Politique de compatibilité branches de version
MediaWiki 1.33+
PHP 5.4+ recommandé
Modifie la base de données Oui
Tables abuse_filter
abuse_filter_action
abuse_filter_history
abuse_filter_log
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
  • $wgAbuseFilterConditionLimit
  • $wgAbuseFilterRangeBlockSize
  • $wgAbuseFilterAnonBlockDuration
  • $wgAbuseFilterLogIPMaxAge
  • $wgAbuseFilterCentralDB
  • $wgAbuseFilterDefaultWarningMessage
  • $wgAbuseFilterLogIP
  • $wgAbuseFilterEmergencyDisableAge
  • $wgAbuseFilterProfileActionsCap
  • $wgAbuseFilterActionRestrictions
  • $wgAbuseFilterActions
  • $wgAbuseFilterPrivateDetailsForceReason
  • $wgAbuseFilterLogPrivateDetailsAccess
  • $wgAbuseFilterSlowFilterRuntimeLimit
  • $wgAbuseFilterEmergencyDisableCount
  • $wgAbuseFilterDefaultDisallowMessage
  • $wgAbuseFilterValidGroups
  • $wgAbuseFilterEmergencyDisableThreshold
  • $wgAbuseFilterLocallyDisabledGlobalActions
  • $wgAbuseFilterBlockDuration
  • $wgAbuseFilterCustomActionsHandlers
  • $wgAbuseFilterBlockAutopromoteDuration
  • $wgAbuseFilterNotificationsPrivate
  • $wgAbuseFilterParserClass
  • $wgAbuseFilterIsCentral
  • $wgAbuseFilterNotifications
  • abusefilter-modify
  • abusefilter-log-detail
  • abusefilter-view
  • abusefilter-log
  • abusefilter-privatedetails
  • abusefilter-privatedetails-log
  • abusefilter-modify-restricted
  • abusefilter-revert
  • abusefilter-view-private
  • abusefilter-log-private
  • abusefilter-hidden-log
  • abusefilter-hide-log
  • abusefilter-modify-global
Traduire l’extension AbuseFilter sur translatewiki.net
Vérifier la matrice des utilisations et des versions.
Problèmes Tâches ouvertes · Signaler un bogue

L’extension AbuseFilter (filtre anti-abus) permet aux utilisateurs privilégiés de positionner des contrôles spécifiques sur les actions des utilisateurs tels que les contributions et de créer des réactions automatiques pour certains comportements.

Par exemple, un filtre peut être créé pour empêcher que certains utilisateurs anonymes n'ajoutent des liens externes , ou pour bloquer un utilisateur qui supprime plus de 2000 caractères.

Installation

  • Téléchargez et placez le(s) fichiers (s) dans un répertoire appelé AbuseFilter dans votre dossier extensions/.
  • Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant composer install --no-dev après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.)
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
    wfLoadExtension( 'AbuseFilter' );
    
  • Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
  • Configurer si nécessaire.
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Pour les utilisateurs de MediaWiki 1.26 ou précédents :

Les instructions ci-dessus décrivent la nouvelle procédure pour installer cette extension en utilisant wfLoadExtension(). Si vous avez besoin d'installer cette extension sur les précédentes versions de MediaWiki (1.26 ou antérieur), à la place de wfLoadExtension( 'AbuseFilter' );, vous devez utiliser :

require_once "$IP/extensions/AbuseFilter/AbuseFilter.php";

Configuration

Droits utilisateur

Une fois que vous avez installé l’extension, vous devez paramétrer les droits utilisateur dans "LocalSettings.php".

Droit Description
abusefilter-modify Créer ou modifier les filtres anti-abus
abusefilter-view Voir les filtres anti-abus
abusefilter-log Voir le journal des filtres anti-abus
abusefilter-log-detail Voir les entrées détaillées du journal anti-abus
abusefilter-privatedetails Voir les données privées dans le journal anti-abus
abusefilter-modify-restricted Modifier les filtres anti-abus qui ont des actions restreintes
abusefilter-modify-global Créer ou modifier des filtres anti-abus globaux
abusefilter-revert Révoquer toutes les modifications effectuées par un filtre anti-abus donné
abusefilter-view-private Voir les filtres anti-abus marqués comme privés
abusefilter-log-private Voir les entrées du journal des filtres anti-abus marqués comme privés
abusefilter-hide-log Masquer des entrées dans le journal anti-abus
abusefilter-hidden-log Voir les entrées masquées du journal anti-abus
abusefilter-privatedetails-log Afficher les détails confidentiels du journal d’accès de AbuseFilter

Par exemple, la configuration d’exemple suivante permet aux sysops de faire tout ce qu’ils veulent avec AbuseFilter, et tout le monde peut voir les journaux et les paramètres publics du filtre :

$wgGroupPermissions['sysop']['abusefilter-modify'] = true;
$wgGroupPermissions['*']['abusefilter-log-detail'] = true;
$wgGroupPermissions['*']['abusefilter-view'] = true;
$wgGroupPermissions['*']['abusefilter-log'] = true;
$wgGroupPermissions['sysop']['abusefilter-privatedetails'] = true;
$wgGroupPermissions['sysop']['abusefilter-modify-restricted'] = true;
$wgGroupPermissions['sysop']['abusefilter-revert'] = true;
Les filtres marqués comme privés ne peuvent être vus que par les utilisateurs ayant le droit abusefilter-modify ou abusefilter-view-private.

Paramètres

Nom de la variable Valeur par défaut Description
$wgAbuseFilterActions
[
    'throttle' => true,
    'warn' => true,
    'disallow' => true,
    'blockautopromote' => true,
    'block' => true,
    'rangeblock' => false,
    'degroup' => true,
    'tag' => true
]
Actions possibles que peuvent faire les filtres anti-abus. Lors de l'ajout d'une nouvelle action, vérifiez si elle est restreinte dans $wgAbuseFilterRestrictions et, si c'est le cas, n'oubliez pas d'ajouter le droit abusefilter-modify-restricted aux groupes d'utilisateurs concernés.
$wgAbuseFilterConditionLimit
1000
Nombre maximum de 'conditions' qui peuvent être utilisées à chaque fois que les filtres sont exécutés sur une modification. (Les filtres plus complexes demandent davantage de 'conditions'.)
$wgAbuseFilterValidGroups
[
    'default'
]
Liste des groupes de filtres dans lesquels ils peuvent être classés. Par défaut il n'existe qu'un seul groupe. D'autres extensions peuvent ajouter des groupes supplémentaires.
$wgAbuseFilterEmergencyDisableThreshold
[
    'default' => 0.05
]
Désactiver les filtres s’ils sont déclenchés sur plus de 2 modifications, constituant plus de 5 % des actions vérifiées avec le groupe de filtres durant la période d'observation choisie (le plus souvent un jour), à moins que le filtre ait été modifié dans les 86400 dernières secondes (un jour). Voir la limitation d'urgence.
$wgAbuseFilterEmergencyDisableCount
[
    'default' => 2
]
$wgAbuseFilterEmergencyDisableAge
[
    'default' => 86400
]
$wgAbuseFilterParserClass
'AbuseFilterParser'
Nom de la classe de l'analyseur syntaxique de AbuseFilter.
$wgAbuseFilterActionRestrictions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => true,
	"block" => true,
	"rangeblock" => true,
	"degroup" => true,
	"tag" => false
]
Les utilisateurs doivent avoir le droit utilisateur abusefilter-modify-restricted ainsi que abusefilter-modify pour pouvoir créer ou modifier les filtres que supposent ces actions.
$wgAbuseFilterNotifications
false
Permet de configurer l'extension pour envoyer des notifications de déclenchement vers Special:RecentChanges ou vers UDP. Options disponibles : rc, udp, rcandudp
$wgAbuseFilterNotificationsPrivate
false
Autoriser les notifications pour les filtres privés.
$wgAbuseFilterCentralDB
null
Nom de la base de données où les filtres anti-abus sont stockés (supporté uniquement dans la dernière version de développement).
$wgAbuseFilterIsCentral
false
Positionnez cette variable à true pour le wiki où les filtres globaux anti-abus sont stockés (supporté uniquement dans la dernière version de développement).
$wgAbuseFilterLocallyDisabledGlobalActions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => false,
	"block" => false,
	"rangeblock" => false,
	"degroup" => false,
	"tag" => false
]
Interdit aux filtres centralisés de prendre des actions qui bloquent localement, enlèvent des utilisateurs des groupes, ou révoquent des permissions.
$wgAbuseFilterBlockDuration
'indefinite'
Durée des blocages faits par le filtre anti-abus.
A partir de 1.31.0-wmf.25, les durées de blocage peuvent être spécifiées indépendamment pour chaque filtre et remplacent cette variable. Cette variable est uniquement utilisée lors de l'activation du blocage afin de présélectionner une durée par défaut.
$wgAbuseFilterAnonBlockDuration
null
Durée des blocages décidés par AbuseFilter pour les utilisateurs anonymes; la valeur de $wgAbuseFilterBlockDuration sera utilisée si cette durée n'est pas initialisée.
A partir de 1.31.0-wmf.25, les durées des blocages peuvent être spécifiées pour chaque filtre indépendamment et remplacent cette variable. Cette variable est uniquement utilisée lors de l'activation du blocage afin de présélectionner une durée par défaut.
$wgAbuseFilterCustomActionsHandlers
[ ]
Fonctions de rappel pour les actions personnalisées.
$wgAbuseFilterDefaultWarningMessage
[
    'default' => 'abusefilter-warning'
]
Messages d'avertissement par défaut, par groupe de filtrage.
$wgAbuseFilterLogIPMaxAge
3 * 30 * 24 * 3600
Durée utilisée comme limite pour purger les anciennes données journalisées par adresse IP. Par défaut : 3 mois. Utilisé par le script de maintenance purgeOldLogIPData.php.
$wgAbuseFilterProfileActionsCap
10000
Nombre d'actions qui déterminent quand il faut réinitialiser les statistiques de profilage.
$wgAbuseFilterLogPrivateDetailsAccess
false
indique s'il faut tracer l'accès aux informations privées à partir d'une entrée de journal du filtre.
$wgAbuseFilterPrivateDetailsForceReason
false
indique si les utilisateurs sont obligés de fournir un motif pour accéder aux données privées à partir d'une entrée de journal du filtre.

Limitation d'urgence

AbuseFilter est livré avec une fonctionnalité qui limite automatiquement (désactive) les filtres qui ont été dernièrement modifiés et qui vérifient un certain seuil d'actions récentes.

Ceci est fait pour empêcher les modifications nuisibles sur les filtres, pour bloquer chaque utilisateur réalisant une action sur le wiki ou similaire.

La condition pour désactiver le filtre dépend de ces variables :

  • $wgAbuseFilterEmergencyDisableThreshold - Pourcentage de déclenchements du filtre sur le nombre total d'actions durant la période d'observation.
  • $wgAbuseFilterEmergencyDisableCount - compte le nombre de fois où le filtre s'est déclenché pendant la période d'observation.
  • $wgAbuseFilterEmergencyDisableAge - Age du filtre pour le prendre en compte. Si la dernière modification du filtre est plus ancienne que ce nombre de secondes, le filtre ne sera pas limité - à moins qu'il ne le soit déjà.
  • $wgAbuseFilterProfileActionsCap - Nombre maximum d'actions récentes à prendre en compte par rapport au seuil. Notez que chaque action incrémente un compteur, et une fois que ce compteur est égal à la valeur de ce paramètre de configuration, le compteur ainsi que le nombre total d'actions récentes ayant déclenché tous les filtres, sont remis à 0.

Les filtres de limitation peuvent être identifiés dans la liste des filtres (Special:AbuseFilter) avec l'état Activé, limité. La limitation se fait silencieusement, et il n'est pas possible de voir quand un filtre est limité.

Quand un filtre est limité, il ne fait aucune action dangereuse (celles spécifiées dans $wgAbuseFilterRestrictions), et uniquement les actions sécurisées sont permises. Les filtres de limitation ne sont pas activés automatiquement. Pour désactiver la limitation, vous devez modifier les filtres. Notez que vous devez modifier actuellement quelque chose dans le filtre : mettre à jour ses commentaires est suffisant.

Notez que si vous modifiez le filtre, vous modifiez également son age, et vous pourrez provoquer éventuellement sa désactivation s'il satisfait aux conditions pour être limité durant une courte période depuis la dernière modification, ce qui en fait un filtre non utilisable si votre wiki reçoit davantage de modifications abusives que de modifications légitimes. Les filtres peuvent être aussi limités au hasard si le compteur d'actions atteint la valeur de $wgAbuseFilterProfileActionsCap, provoquant la remise à zéro des compteurs de détection des filtres, et que quelqu'un déclenche un filtre d'une manière répétitive.

Créer et gérer les filtres

Une fois l’extension installée, les filtres peuvent être créés, testés, changés, effacés, et on peut accéder aux journaux depuis la page de gestion du filtre anti-abus Special:AbuseFilter.

API

Le filtre anti-abus ajoute deux modules dans l’API list, un relatif aux détails du filtre anti-abus (abusefilters) et un relatif au journal des filtrages puisque celui-ci est séparé des autres journaux MediaWiki (abuselog). Il n’est pas possible de créer ou de modifier des filtres anti-abus à partir de l’API.

list = abusefilters

Liste les informations sur les filtres

Paramètres
  • abfstartid - identifiant du filtre où commencer l’énumération
  • abfendid - identifiant du filtre où terminer l’énumération
  • abfdir - direction dans laquelle se fait l’énumération (older, newer = vers le plus ancien, vers le plus récent)
  • abfshow - ne montrer que les filtres qui répondent à ces critères (enabled|!enabled|deleted|!deleted|private|!private = activé|!activé|effacé|!effacé|privé|!privé)
  • abflimit - nombre maximum de filtres dans la liste
  • abfprop - quelles propriétés afficher (id|description|pattern|actions|hits|comments|lasteditor|lastedittime|status|private = identifiant|description|motif|actions|nombre d’activations|commentaires|dernier contributeur|date de dernière modification|statut|privé)

Quand les filtres sont privés, quelques-unes des propriétés spécifiées avec abfprop seront manquantes à moins que vous n’ayez les droits utilisateur appropriés.

Exemples

Liste les filtres anti-abus non-privés

list = abuselog

Liste les instances où des actions ont actionné un filtre anti-abus.

Paramètres
  • aflstart - identifiant du filtre où commencer l’énumération
  • aflend - identifiant du filtre où terminer l’énumération
  • afldir - direction dans laquelle se fait l’énumération (older, newer = vers le plus vieux, vers le plus récent)
  • afluser - ne montrer que les entrées où l’action est testée pour un utilisateur ou une IP donné.
  • afltitle - ne montrer que les entrées où l’action est testée pour une page donnée.
  • aflfilter - ne montrer que les entrées actionnées par un identifiant de filtre donné
  • afllimit - nombre maximum d’entrées dans la liste
  • aflprop - quelles propriétés afficher: (ids|filter|user|ip|title|action|details|result|timestamp|hidden|revid|wiki)
Exemple

Liste les instances où le filtre anti-abus a été actionné en réponse aux actions de l’utilisateur « SineBot »

Erreurs potentielles

  • Certains utilisateurs peuvent s'apercevoir que créer de nouveaux filtres ou en modifier des anciens ne fonctionne pas et ils sont redirigés simplement vers la page d'origine. Si le wiki utilise des certificats SSL, cette erreur peut être éventuellement dûe à la valeur de $wgServer , qui peut utiliser « http:// » au lieu de « https:// » . Une indication de cette erreur sera que le navigateur affichera un avertissement pour les pages Special:AbuseFilter . (Topic:T23dyyih0ofjada5)

Integration avec d'autres extensions

Vous pouvez intégrer AbuseFilter avec d'autres extensions de différentes manières.

Ajouter des variables pour le filtrage

Il est possible d'ajouter de nouvelles variables à utiliser dans les filtres anti-abus. Une liste d'exemples est disponible . Pour faire cela, vous devez :

  • Ajoutez un gestionnaire pour l'accroche AbuseFilter-builder . Pour ajouter une variable, vous devez utiliser $builder['vars']['variable_name'] = 'i18n-key';, où variable_name est le nom de la variable, et i18n-key est le fragment d'une clé i18n. La clé complète sera abusefilter-edit-builder-vars-{$your_key}.
  • Ajouter les messages i18n que vous avez choisis à l'étape précédente.
  • Choisissez un gestionnaire d'accroche pour lequel la variable sera calculée. En fonction de votre cas d'utilisation, vous pouvez :
    • Implémente l'accroche AbuseFilter-generateTitleVars  ; ceci est fait particulièrement pour les variables relatives aux pages;
    • Implémente l'accroche AbuseFilter-generateUserVars  ; ceci est fait particulièrement pour les variables relatives aux utilisateurs;
    • Implement the AbuseFilter-generateGenericVars hook; this is for variables not bound to a specific page or user;
    • Implémentez l'accroche AbuseFilterAlterVariables  ; ceci est un peu plus flexible que les autres accroches, mais il a un inconvénient : votre variable ne sera pas disponible lorsque vous examinerez les dernière entrées des modifications récentes réalisées. Si vous voulez implémenter cette fonctionnalité (et il est recommandé de le faire), vous devez utiliser l'une des accroches décrites ci-dessus, et son troisième paramètre ($RCRow).
  • A l'intérieur du gestionnaire associé à l'accroche, il existe deux façons d'ajouter une variable :
    • La manière directe est d'appeler $vars->setVar( 'var_name', var_value );. Ceci est l'idéal uniquement quand la valeur est facile et rapide à évaluer : la valeur est évaluée même si aucun filtre actif ne l'utilise.
    • La manière paresseuse est d'appeler $vars->setLazyLoadVar( 'var_name', 'method_name', $params );. Ici, 'method_name' est un identifiant (unique) qui sera utilisé pour évaluer la variable (il est recommandé de le préfixer en lui ajoutant le nom de votre extension). Pour enregistrer la méthode, vous devez ajouter un gestionnaire à l'accroche AbuseFilter-computeVariable  ; de là vous devez contrôler si la $method passée correspond à 'method_name' et si c'est le cas, vous évaluez la variable. Enfin, $params est un tableau de paramètres dont vous aurez besoin pour évaluer la variable; ceux-ci sont passés au gestionnaire de l'accroche computeVariable. Pour un exemple de ceci, voyez le global_user_groups de CentralAuth.


Ajouter des groupes de règles

Vous pouvez aussi ajouter des groupes de règles supplémentaires, qui peuvent être utilisés pour regrouper les filtres anti-abus existants. Notez qu'actuellement, chaque filtre ne peut se trouver que dans un seul groupe à la fois (T116642). Actuellement, le seul consommateur connu de cette fonctionnalité sont les discussions structurées. Pour faire cela vous devez :

  • Ajouter le nom du groupe à $wgAbuseFilterValidGroups
  • Ajouter du code pour exécuter les filtres avec votre groupe. Notez que AbuseFilter ne fera pas cela tout seul. Pour cela, vous devez construire un objet AbuseFilterRunner en lui passant le nom de votre groupe.

Voir aussi