Manuel:$wgRateLimits

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:$wgRateLimits and the translation is 100% complete.
Other languages:
English • ‎español • ‎français • ‎magyar • ‎polski • ‎русский • ‎中文 • ‎日本語
Limitations de quota: $wgRateLimits
Options du simple limiteur de débit permettant de restreindre les flux des 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

Ce paramètre offre un simple limiteur de débit permettant de restreindre les flux des modifications ainsi que d'autres comportements potentiellement destructeurs, comme l'émission de courriels aux autres utilisateurs. Il définit un nombre maximal d'actions permises dans le nombre donné de secondes; après cela, le client qui dépasse ce temps reçoit des pages d'erreur HTTP 429 jusqu'à l'expiration. Remarquez que les limites sont définies généralement par site, mais certaines de 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 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 attachés dessus actuellement. 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 de 24 adresses (pour IPV4) ou 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 (vor 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 à l'intervalle entre /24 et /64. 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.

$wgMainCacheType doit être initialisé avec une valeur différente de CACHE_NONE pour que les limites de débit soient effectivement actives.

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).

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 ],
	],
];
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