Manual:$wgRateLimits
User rights, access control and monitoring: $wgRateLimits | |
---|---|
Opciones sencillas para limitar la frecuencia de ediciones en oleadas masivas. |
|
Introducido en la versión: | 1.4.5 |
Eliminado en la versión: | aún se usa |
Valores permitidos: | no especificado |
Valor predeterminado: | ver a continuación |
Otras configuraciones: Alfabéticamente | Por Función |
Detalles
Esta configuración proporciona un sencillo limitador de frecuencia para limitar las oleadas masivas de ediciones y otros comportamientos potencialmente destructivos, como enviar correos a otros usuarios. Establece un número máximo de acciones permitidas en una franja de tiempo de tantos segundos. Más allá de ello, el cliente infractor recibirá páginas de error HTTP 429 hasta que haya pasado el plazo. Note that limits are generally counted per site, but some of the special limits are aggregated across all sites in a wiki farm, e.g. all Wikimedia wikis. Para comprobar si se ha excedido un límite de frecuencia, usa la función User::pingLimiter() .
The general syntax is:
$wgRateLimits['<action>']['<usergroup>'] = [ <maximum number of action>, <timespan in second> ];
There are some special additional limits:
anon
- applies to unregistered users only, and applies by action and IP.user
- applies to registered users only, and applies by action and user.user-global
- (since 1.35) applies by action and registered user, counted across sites.newbie
- applies to unregistered, temporary and "newbie" users, and applies by action and user.ip
- applies to both unregistered and "newbie" users (i.e. users without theautoconfirmed
user right), and will limit total number of action from one IP regardless of specific users. This will be enforced in addition to other limits, and is counted across sites.subnet
- applies to both unregistered and "newbie" users, and will limit total number of action from the /24 (for IPv4) or /64 (for IPv6) range of IP. This will be enforced in addition to other limits, and is counted across sites.ip-all
- applies to all users other than those whose user-specific limit (see below) is more permissive, and will limit total number of action from one IP regardless of specific users. This will be enforced in addition to other limits, and is counted across sites.subnet-all
- applies to all users other than those whose user-specific limit is more permissive, and will limit total number of action from /24 or /64 range. This will be enforced in addition to other limits, and is counted across sites.
If there are multiple limit defined, the user-specific limit is defined as:
newbie
- if the user is a "newbie", or- The most permissive (i.e. with the highest action/timespan ratio) of
user
limit and all applicable user group limits of the user, or anon
- for unregistered users.
All user groups defined in $wgAutopromote (for example, autoconfirmed
) will not be checked unless you explicitly assigned the user group to a specific user.
Por ejemplo, para establecer un máximo de 4 ediciones cada 60 segundos para usuarios «newbie» (novatos, es decir, no autoconfirmados), añade esto:
$wgRateLimits['edit']['newbie'] = [ 4, 60 ];
ip
. Esto puede tener efectos deseados o no deseados. Si tienes por ejemplo un hackatón con un gran número de usuarios nuevos (legítimos), es posible que alcancen rápidamente el límite de acciones por IP, lo cual puede ser indeseado. Por otra parte, los spammers que usan distintas cuentas desde la misma dirección IP también pueden alcanzar el límite, lo cual sería deseado.By setting $wgRateLimits['anAction']['&can-bypass'] = false;
the limitations for a specific action can be marked as not skippable.
If that is set, neither the noratelimit user right nor the $wgRateLimitsExcludedIPs setting have any effect for that action.
Las extensiones pueden proporcionar claves adicionales para $wgRateLimit. Por ejemplo, Extension:ConfirmEdit proporciona una clave «badcaptcha» que permite ralentizar a los usuarios según el número de respuestas incorrectas que hayan dado a un captcha. Un ejemplo sería:
$wgRateLimits['badcaptcha']['newbie'] = [ 100, 86400 ];
Esto permitiría a los usuarios no más de 100 respuestas incorrectas cada día (86400 segundos).
Rate limit message
After reaching the rate limit, either of two things will happen. For purges, the purge dialogue will disappear. For edits or rollbacks, editors will see the following message:
Acción limitada
Como medida contra los abusos, la acción que estás realizando está limitada a un número determinado de veces en un periodo corto de tiempo, y has excedido ese límite. Inténtalo de nuevo en unos minutos.
This message can be modified by editing MediaWiki:Actionthrottled and MediaWiki:Actionthrottledtext.
Valor predeterminado
Versión de MediaWiki: | ≥ 1.41 |
$wgRateLimits = [
// Ediciones de páginas
'edit' => [
'ip' => [ 8, 60 ],
'newbie' => [ 8, 60 ],
'user' => [ 90, 60 ],
],
// Traslados de páginas
'move' => [
'newbie' => [ 2, 120 ],
'user' => [ 8, 60 ],
],
// Subidas de archivos
'upload' => [
'ip' => [ 8, 60 ],
'newbie' => [ 8, 60 ],
],
// Reversiones de páginas
'rollback' => [
'user' => [ 10, 60 ],
'newbie' => [ 5, 120 ]
],
// Peticiones de correos de reactivación de contraseña
'mailpassword' => [
'ip' => [ 5, 3600 ],
],
// Envíos de correos electrónicos a otros usuarios mediante MediaWiki
'sendemail' => [
'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 ]
],
// Purgas de páginas
'purge' => [
'ip' => [ 30, 60 ],
'user' => [ 30, 60 ],
],
// Purgas de tablas de enlaces
'linkpurge' => [
'ip' => [ 30, 60 ],
'user' => [ 30, 60 ],
],
// Archivos generados mediante thumb.php o thumb_handler.php
'renderfile' => [
'ip' => [ 700, 30 ],
'user' => [ 700, 30 ],
],
// Igual que lo anterior, pero para miniaturas no estándar
'renderfile-nonstandard' => [
'ip' => [ 70, 30 ],
'user' => [ 70, 30 ],
],
// Almacenamientos de ediciones en la antememoria antes de su guardado
'stashedit' => [
'ip' => [ 30, 60 ],
'newbie' => [ 30, 60 ],
],
// Stash base HTML for VE edits
'stashbasehtml' => [
'ip' => [ 5, 60 ],
'newbie' => [ 5, 60 ],
],
// Adición o borrado de etiquetas de cambio
'changetags' => [
'ip' => [ 8, 60 ],
'newbie' => [ 8, 60 ],
],
// Changing the content model of a page
'editcontentmodel' => [
'newbie' => [ 2, 120 ],
'user' => [ 8, 60 ],
],
];
Versiones de MediaWiki: | 1.39 – 1.40 Gerrit change 805091 |
$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 ]
],
// since 1.33 - rate limit email confirmations
'confirmemail' => [
'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 ],
],
// Stash base HTML for VE edits
'stashbasehtml' => [
'ip' => [ 5, 60 ],
'newbie' => [ 5, 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 ],
],
];
Versiones de MediaWiki: | 1.34 – 1.38 |
$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 ]
],
// since 1.33 - rate limit email confirmations
'confirmemail' => [
'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 ],
],
];
Extended content | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$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 ],
],
];
$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 ],
],
];
$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 ],
],
];
$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 ],
],
];
$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,
),
);
$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,
),
);
$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,
),
);
$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,
),
);
$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,
),
);
$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,
),
);
|
Versiones 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,
),
);
Historial de versiones
- Se añadió el array «mailpassword» en MediaWiki 1.7.0.
- Se añadió el array «emailuser» en MediaWiki 1.10.0.
- Se añadió el array «linkpurge» en MediaWiki 1.22.0.
- Se añadió el array «renderfile» en MediaWiki 1.22.0.