Manuel:$wgRateLimits

This page is a translated version of the page Manual:$wgRateLimits and the translation is 100% complete.
Droits utilisateur, contrôle d'accès et supervision: $wgRateLimits
Options du limiteur simple de débit permettant de restreindre les flux de modifications.
Introduit dans la version :1.4.5
Retiré dans la version :Encore utilisé
Valeurs autorisées :Non renseigné
Valeur par défaut :voir ci-dessous

Détails

Avertissement Avertissement : $wgMainCacheType doit être initialisé avec une valeur différente de CACHE_NONE pour que les limitations de débit soient effectivement actives. La valeur par défaut est CACHE_NONE, donc tout ce qui est documenté en dessous ne fonctionnera pas comme prévu.

Ce paramètre offre un limiteur simple de débit permettant de restreindre les flux de modifications ainsi que d'autres comportements potentiellement destructeurs, comme l'émission de courriels vers les autres utilisateurs. Il définit un nombre maximal d'actions permises durant un temps donné en secondes; un client qui dépasserait ce nombre recevrait la page d'erreur HTTP 429 ou un autre message d'erreur, tant que cette durée n'aura pas expiré. Remarquez que les limites sont définies généralement par site, mais certaines des limites spéciales sont aggrégées au travers de tous les sites d'une ferme de wikis, c'est à dire qu'elles comptabilisent tous les wikis Wikimedia. Pour vérifier qu'une limite de taux a été dépassée, utilisez la fonction User::pingLimiter().

La syntaxe générale est :

$wgRateLimits['<action>']['<usergroup>'] = [ <maximum number of action>, <timespan in second> ];

Il existe quelques limites spéciales supplémentaires :

  • anon - concerne uniquement les utilisateurs anonymes (non enregistrés) et s'applique par action et par adresse IP.
  • user - concerne uniquement les utilisateurs enregistrés, et s'applique par action et par adresse IP.
  • user-global - (depuis 1.35) s'applique par action et aux utilisateurs enregistrés, compté sur tous les sites.
  • newbie - concerne à la fois les utilisateurs non enregitrés ainsi que les nouveaux venus, et s'applique par action et par utilisateur.
  • ip - s'applique à la fois aux utilisateurs non enregistrés ainsi qu'aux nouveaux venus (c'est à dire aux utilisateurs qui n'ont pas le droit autoconfirmed ), et va limiter le nombre total d'actions émanant d'une adresse IP quelque soit les utilisateurs qui sont actuellement connectés avec. Ceci viendra s'ajouter aux autres limites, et est comptabilisé sur chacun des sites.
  • subnet - s'applique à la fois aux utilisateurs non enregistrés ainsi qu'aux nouveaux venus, et va limiter le nombre total d'actions émanant de l'intervalle des 24 adresses (pour IPV4) ou des 64 adresses IP (pour IPV6). Ceci viendra s'ajouter aux autres limites, et est comptabilisé sur chacun des sites.
  • ip-all - s'applique à tous les utilisateurs autres que ceux ayant une limite spécifique utilisateur plus permissive (voir ci-après), et va limiter le nombre total d'actions venant d'une adresse IP quelque soit les utilisateurs spécifiques. Ceci viendra s'ajouter aux autres limites, et est comptabilisé sur chacun des sites.
  • subnet-all - s'applique à tous les utilisateurs autres que ceux pour lesquels la limite spécifique utilisateur est plus permissive, et va limiter le nombre total d'actions pour l'intervalle des /24 ou /64 adresses IP. Ceci viendra s'ajouter aux autres limites, et est comptabilisé sur chacun des sites.

Si plusieurs limites sont déclarées, la « limite dédiée utilisateur » est définie comme :

  • newbie - si l'utilisateur est un nouveau venu, ou
  • Le plus permissif (c'est à dire avec le plus grand ratio action/intervalle de temps) pami les limites de user et toutes les limites applicables des groupes auxquels utilisateur appartient, ou
  • anon - pour les utilisateurs non enregistrés.

Tous les groupes d'utilisateurs définis dans $wgAutopromote (par exemple, autoconfirmed) ne seront pas vérifiés à moins que vous n'assigniez explicitement le groupe utilisateur à un utilisateur particulier.

Par exemple, pour définir un maximum de 4 modifications toutes les 60 secondes pour les nouveaux venus (c'est à dire les utilisateurs non-autoconfirmés), ajoutez ceci :

$wgRateLimits['edit']['newbie'] = [ 4, 60 ];
Si vous avez beaucoup de débutants qui se partagent la même adresse IP, ils s'aggrègent tous sous un compteur unique pour la limitation ip. Ceci peut avoir des effets désirés ou non. Si par exemple vous avez du code qui fait un sprint avec un très grand nombre de nouveaux utilisateurs (légitimes), ils peuvent atteindre la limite IP très rapidement, ce qui n'est pas forcément souhaité. D'un autre côté, les émetteurs de pourriels qui utilisent généralement plusieurs comptes différents à partir d'une même adresse IP vont déclencher de la même manière, et c'est ce que l'on veut.

En initialisant $wgRateLimits['anAction']['&can-bypass'] = false; les limites pour une action spécifique peuvent être marquées comme non escamotables. Si cela est positionné, ni le droit utilisateur noratelimit, ni le paramètre $wgRateLimitsExcludedIPs n'ont d'effet sur cette action.

Les extensions peuvent fournir des clés supplémentaires pour $wgRateLimit. Par exemple Extension:ConfirmEdit fournit une clé badcaptcha, qui permet de limiter les utilisateurs en fonction du nombre de mauvaises réponses qu'ils ont fournies pour un captcha. Un exemple peut être :

$wgRateLimits['badcaptcha']['newbie'] = [ 100, 86400 ];

Ceci fera que les nouveaux venus ne seront pas autorisés à faire plus de 100 mauvaises réponses par jour (86400 secondes).

Message de limitation du seuil

Après que le seuil a été atteint, l'une des deux choses va se produire. Pour les purges, le dialogue de purge va disparaître. Pour les modifications ou les restitutions, les contributeurs verront le message suivant :

Action limitée

Pour lutter contre les abus, l’utilisation de cette action est limitée à un certain nombre de fois dans un laps de temps assez court et vous avez dépassé cette limite. Veuillez essayer à nouveau dans quelques minutes.

Ce message peut être changé en modifiant MediaWiki:Actionthrottled et MediaWiki:Actionthrottledtext.

Valeurs par défaut

Version de MediaWiki :
1.34
$wgRateLimits = [
	// Modifications de pages
	'edit' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
		'user' => [ 90, 60 ],
	],
	// Renommages de pages
	'move' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
	// Téléversements de fichiers
	'upload' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Restitutions de pages
	'rollback' => [
		'user' => [ 10, 60 ],
		'newbie' => [ 5, 120 ]
	],
	// Contôler les courriels de réinitialisation des mots de passe
	'mailpassword' => [
		'ip' => [ 5, 3600 ],
	],
	// Envoyer un courriel aux autres utilisateurs en utilisant MediaWiki
	'emailuser' => [
		'ip' => [ 5, 86400 ],
		'newbie' => [ 5, 86400 ],
		'user' => [ 20, 86400 ],
	],
	'changeemail' => [
		'ip-all' => [ 10, 3600 ],
		'user' => [ 4, 86400 ]
	],
	// since 1.33 - rate limit email confirmations
	'confirmemail' => [
		'ip-all' => [ 10, 3600 ],
		'user' => [ 4, 86400 ]
	],
	// Purger des pages
	'purge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Purger les tables de liens
	'linkpurge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Fichiers générés via thumb.php ou thumb_handler.php
	'renderfile' => [
		'ip' => [ 700, 30 ],
		'user' => [ 700, 30 ],
	],
	// La même chose que ci-dessus mais pour des vignettes non standard
	'renderfile-nonstandard' => [
		'ip' => [ 70, 30 ],
		'user' => [ 70, 30 ],
	],
	// Mise en réserve des modifications dans le cache avant l'enregistrement
	'stashedit' => [
		'ip' => [ 30, 60 ],
		'newbie' => [ 30, 60 ],
	],
	// Ajouter ou supprimer les balises de modification
	'changetag' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Changing the content model of a page
	'editcontentmodel' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
];
Versions de MediaWiki :
1.30 – 1.33
$wgRateLimits = [
	// Page edits
	'edit' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
		'user' => [ 90, 60 ],
	],
	// Page moves
	'move' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
	// File uploads
	'upload' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Page rollbacks
	'rollback' => [
		'user' => [ 10, 60 ],
		'newbie' => [ 5, 120 ]
	],
	// Triggering password resets emails
	'mailpassword' => [
		'ip' => [ 5, 3600 ],
	],
	// Emailing other users using MediaWiki
	'emailuser' => [
		'ip' => [ 5, 86400 ],
		'newbie' => [ 5, 86400 ],
		'user' => [ 20, 86400 ],
	],
	'changeemail' => [
		'ip-all' => [ 10, 3600 ],
		'user' => [ 4, 86400 ]
	],
	// Purging pages
	'purge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Purges of link tables
	'linkpurge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Files rendered via thumb.php or thumb_handler.php
	'renderfile' => [
		'ip' => [ 700, 30 ],
		'user' => [ 700, 30 ],
	],
	// Same as above but for non-standard thumbnails
	'renderfile-nonstandard' => [
		'ip' => [ 70, 30 ],
		'user' => [ 70, 30 ],
	],
	// Stashing edits into cache before save
	'stashedit' => [
		'ip' => [ 30, 60 ],
		'newbie' => [ 30, 60 ],
	],
	// Adding or removing change tags
	'changetag' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Changing the content model of a page
	'editcontentmodel' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
];
Contenu étendu
Version de MediaWiki :
1.29
$wgRateLimits = [
	// Page edits
	'edit' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
		'user' => [ 90, 60 ],
	],
	// Page moves
	'move' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
	// File uploads
	'upload' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Page rollbacks
	'rollback' => [
		'user' => [ 10, 60 ],
		'newbie' => [ 5, 120 ]
	],
	// Triggering password resets emails
	'mailpassword' => [
		'ip' => [ 5, 3600 ],
	],
	// Emailing other users using MediaWiki
	'emailuser' => [
		'ip' => [ 5, 86400 ],
		'newbie' => [ 5, 86400 ],
		'user' => [ 20, 86400 ],
	],
	// Purging pages
	'purge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Purges of link tables
	'linkpurge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Files rendered via thumb.php or thumb_handler.php
	'renderfile' => [
		'ip' => [ 700, 30 ],
		'user' => [ 700, 30 ],
	],
	// Same as above but for non-standard thumbnails
	'renderfile-nonstandard' => [
		'ip' => [ 70, 30 ],
		'user' => [ 70, 30 ],
	],
	// Stashing edits into cache before save
	'stashedit' => [
		'ip' => [ 30, 60 ],
		'newbie' => [ 30, 60 ],
	],
	// Adding or removing change tags
	'changetag' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Changing the content model of a page
	'editcontentmodel' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
];
Version de MediaWiki :
1.28
$wgRateLimits = [
	// Page edits
	'edit' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Page moves
	'move' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
	// File uploads
	'upload' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Page rollbacks
	'rollback' => [
		'user' => [ 10, 60 ],
		'newbie' => [ 5, 120 ]
	],
	// Triggering password resets emails
	'mailpassword' => [
		'ip' => [ 5, 3600 ],
	],
	// Emailing other users using MediaWiki
	'emailuser' => [
		'ip' => [ 5, 86400 ],
		'newbie' => [ 5, 86400 ],
		'user' => [ 20, 86400 ],
	],
	// Purging pages
	'purge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Purges of link tables
	'linkpurge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Files rendered via thumb.php or thumb_handler.php
	'renderfile' => [
		'ip' => [ 700, 30 ],
		'user' => [ 700, 30 ],
	],
	// Same as above but for non-standard thumbnails
	'renderfile-nonstandard' => [
		'ip' => [ 70, 30 ],
		'user' => [ 70, 30 ],
	],
	// Stashing edits into cache before save
	'stashedit' => [
		'ip' => [ 30, 60 ],
		'newbie' => [ 30, 60 ],
	],
	// Adding or removing change tags
	'changetag' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Changing the content model of a page
	'editcontentmodel' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
];
Version de MediaWiki :
1.27
$wgRateLimits = [
	// Page edits
	'edit' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
		'user' => [ 90, 60 ],
	],
	// Page moves
	'move' => [
		'newbie' => [ 2, 120 ],
		'user' => [ 8, 60 ],
	],
	// File uploads
	'upload' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
	// Page rollbacks
	'rollback' => [
		'user' => [ 10, 60 ],
		'newbie' => [ 5, 120 ]
	],
	// Triggering password resets emails
	'mailpassword' => [
		'ip' => [ 5, 3600 ],
	],
	// Emailing other users using MediaWiki
	'emailuser' => [
		'ip' => [ 5, 86400 ],
		'newbie' => [ 5, 86400 ],
		'user' => [ 20, 86400 ],
	],
	'changeemail' => [
		'ip-all' => [ 10, 3600 ],
		'user' => [ 4, 86400 ]
	],
	// Purging pages
	'purge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Purges of link tables
	'linkpurge' => [
		'ip' => [ 30, 60 ],
		'user' => [ 30, 60 ],
	],
	// Files rendered via thumb.php or thumb_handler.php
	'renderfile' => [
		'ip' => [ 700, 30 ],
		'user' => [ 700, 30 ],
	],
	// Same as above but for non-standard thumbnails
	'renderfile-nonstandard' => [
		'ip' => [ 70, 30 ],
		'user' => [ 70, 30 ],
	],
	// Stashing edits into cache before save
	'stashedit' => [
		'ip' => [ 30, 60 ],
		'newbie' => [ 30, 60 ],
	],
	// Adding or removing change tags
	'changetag' => [
		'ip' => [ 8, 60 ],
		'newbie' => [ 8, 60 ],
	],
];
Versions de MediaWiki :
1.25 – 1.26
$wgRateLimits = array(
	'edit' => array(
		'anon' => null, // for any and all anonymous edits (aggregate)
		'user' => null, // for each logged-in user
		'newbie' => null, // for each recent (autoconfirmed) account; overrides 'user'
		'ip' => null, // for each anon and recent account
		'subnet' => null, // ... within a /24 subnet in IPv4 or /64 in IPv6
	),
	'upload' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'move' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'mailpassword' => array( // triggering password resets emails
		'anon' => null,
	),
	'emailuser' => array( // emailing other users using MediaWiki
		'user' => null,
	),
	'linkpurge' => array( // purges of link tables
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'renderfile' => array( // files rendered via thumb.php or thumb_handler.php
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'renderfile-nonstandard' => array( // same as above but for non-standard thumbnails
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'stashedit' => array( // stashing edits into cache before save
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'changetag' => array( // adding or removing change tags
		'user' => null,
		'newbie' => null,
	),
);
Version de MediaWiki :
1.24
$wgRateLimits = array(
	'edit' => array(
		'anon' => null, // for any and all anonymous edits (aggregate)
		'user' => null, // for each logged-in user
		'newbie' => null, // for each recent (autoconfirmed) account; overrides 'user'
		'ip' => null, // for each anon and recent account
		'subnet' => null, // ... within a /24 subnet in IPv4 or /64 in IPv6
	),
	'upload' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'move' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'mailpassword' => array( // triggering password resets emails
		'anon' => null,
	),
	'emailuser' => array( // emailing other users using MediaWiki
		'user' => null,
	),
	'linkpurge' => array( // purges of link tables
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'renderfile' => array( // files rendered via thumb.php or thumb_handler.php
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'renderfile-nonstandard' => array( // same as above but for non-standard thumbnails
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
);
Version de MediaWiki :
1.23
$wgRateLimits = array(
	'edit' => array(
		'anon' => null, // for any and all anonymous edits (aggregate)
		'user' => null, // for each logged-in user
		'newbie' => null, // for each recent (autoconfirmed) account; overrides 'user'
		'ip' => null, // for each anon and recent account
		'subnet' => null, // ... within a /24 subnet in IPv4 or /64 in IPv6
	),
	'upload' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'move' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'mailpassword' => array( // triggering password resets emails
		'anon' => null,
	),
	'emailuser' => array( // emailing other users using MediaWiki
		'user' => null,
	),
	'linkpurge' => array( // purges of link tables
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'renderfile' => array( // files rendered via thumb.php or thumb_handler.php
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
);
Version de MediaWiki :
1.22
$wgRateLimits = array(
	'edit' => array(
		'anon' => null, // for any and all anonymous edits (aggregate)
		'user' => null, // for each logged-in user
		'newbie' => null, // for each recent (autoconfirmed) account; overrides 'user'
		'ip' => null, // for each anon and recent account
		'subnet' => null, // ... within a /24 subnet in IPv4 or /64 in IPv6
	),
	'move' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'mailpassword' => array( // triggering password resets emails
		'anon' => null,
	),
	'emailuser' => array( // emailing other users using MediaWiki
		'user' => null,
	),
	'linkpurge' => array( // purges of link tables
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'renderfile' => array( // files rendered via thumb.php or thumb_handler.php
		'anon' => null,
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
);
Versions de MediaWiki :
1.10 – 1.21
$wgRateLimits = array(
	'edit' => array(
		'anon' => null, // for any and all anonymous edits (aggregate)
		'user' => null, // for each logged-in user
		'newbie' => null, // for each recent (autoconfirmed) account; overrides 'user'
		'ip' => null, // for each anon and recent account
		'subnet' => null, // ... with final octet removed
	),
	'move' => array(
		'user' => null,
		'newbie' => null,
		'ip' => null,
		'subnet' => null,
	),
	'mailpassword' => array(
		'anon' => null,
	),
	'emailuser' => array(
		'user' => null,
	),
);
Versions de MediaWiki :
1.7 – 1.9
$wgRateLimits = array(
	'edit' => array(
		'anon'   => null, // for any and all anonymous edits (aggregate)
		'user'   => null, // for each logged-in user
		'newbie' => null, // for each recent account; overrides 'user'
		'ip'     => null, // for each anon and recent account
		'subnet' => null, // ... with final octet removed
		),
	'move' => array(
		'user'   => null,
		'newbie' => null,
		'ip'     => null,
		'subnet' => null,
		),
	'mailpassword' => array(
		'anon' => NULL,
		),
	);
Versions de MediaWiki :
1.4 – 1.6
$wgRateLimits = array(
	'edit' => array(
		'anon'   => null, // for any and all anonymous edits (aggregate)
		'user'   => null, // for each logged-in user
		'newbie' => null, // for each recent account; overrides 'user'
		'ip'     => null, // for each anon and recent account
		'subnet' => null, // ... with final octet removed
		),
	'move' => array(
		'user'   => null,
		'newbie' => null,
		'ip'     => null,
		'subnet' => null,
		),
	);

Différences entre les versions

  • Le tableau 'mailpassword' a été ajouté dans MediaWiki 1.7.0.
  • Le tableau 'emailuser' a été ajouté dans MediaWiki 1.10.0.
  • Le tableau 'linkpurge' a été ajouté dans MediaWiki 1.22.0.
  • Le tableau 'renderfile' a été ajouté dans MediaWiki 1.22.0.

Voir aussi