Extensión:SpamBlacklist

This page is a translated version of the page Extension:SpamBlacklist and the translation is 99% complete.
Outdated translations are marked like this.
This extension comes with MediaWiki 1.21 and above. Thus you do not have to download it again. However, you still need to follow the other instructions provided.
Extensión matemática MediaWiki
OOjs UI icon advanced-invert.svg
SpamBlacklist
Estado de lanzamiento estable
SpamBlacklist.gif
Implementación Acción de página
Descripción Proporciona un filtro de spam basado en expresiones regulares
Autor(es) Tim Starlingdiscusión
Última versión Actualizaciones continuas
Política de compatibilidad Snapshots releases along with MediaWiki. Master is not backward compatible.
MediaWiki 1.31+
Licencia GNU Licencia Pública general 2.0 o más tarde
Descarga
README
  • $wgBlacklistSettings
  • $wgLogSpamBlacklistHits
  • spamblacklistlog
Traduce el SpamBlacklist extensión si es disponible en translatewiki.net

Verificar uso y versión de la matriz.

Asuntos Tareas abiertas · Reportar un bug
Una propuesta para renombrar esta extensión está en discusión en task T254649

La extensión SpamBlacklist previene ediciones que contienen direcciones URL, en las que el dominio se iguala a expresiones regulares definidas en listas especificadas o páginas wiki, que son registradas por usuarios usando una dirección de correo electrónico especificada

Cuando alguien intenta guardar una página o edición, esta extensión analiza el texto frente a una lista ilegal de nombres de host (potencialmente muy larga). Si hay una coincidencia, la extensión muestra un mensaje de error al usuario y le impide guardar la página.

Instalación y configuración

Instalación

Estableciendo la lista de bloqueo

Las siguientes páginas locales son usadas siempre, están listadas sin importar otras fuentes adicionales:

La procedencia por defecto para una lista adicional de bloqueo de URLs prohibidas, es la spam block list de Wikimedia en Meta-Wiki, en m:Spam block list. Por defecto, la extensión utiliza esta lista y se actualiza cada 10 a 15 minutos. Para muchas wikis, usar esta lista es suficiente para bloquear la mayoría de intentos de spam. Sin embargo, desde que la lista negra de Wikimedia es usada por un grupo diverso de grandes wikis con cientos de miles de enlaces externos, es relativamente conservador con los enlaces que bloquea.

La lista negra de spam de Wikimedia puede ser editada por administradores; pero tú puedes sugerir modificaciones la lista negra en m:Talk:Spam blacklist.

Puedes añadir otra mala URL en tu propia wiki. Colócala en la variable global $wgBlacklistSettings en LocalSettings.php . Observa algunos ejemplos abajo.

$wgBlacklistSettings es un arreglo de dos niveles. La llave de nivel superior es spam o email. Ellas toman un arreglo con cada valor que puede contener una URL, un archivo o una ubicación de base de datos.

Si utilizas $wgBlacklistSettings en "LocalSettings.php", el valor por defecto de "[[m:Spam blacklist]]" ya no será utilizado. Si tu quieres esa lista negra para acceder, tendrás que añadirla manualmente, observa los ejemplos abajo.

Especificando una ubicación de base de datos te permite configurar la lista negra desde una página en tu wiki.

El formato del especificador de ubicación de la base de datos es ">DB: [db name] [title]". Esta [db name] debería emparejar exactamente el valor de $wgDBname en LocalSettings.php . Tu deberías crear el nombre de la página requerido en [title] en el namespace por defecto de tu wiki. Si haces esto, te recomendamos fuertemente que protejas la página de ediciones en general. Además del peligro obvio en el que alguien puede añadir una expresión regular que empareje todo, ten en cuenta que un atacante con la capacidad de introducir expresiones regulares arbitrarias puede ser capaz de generar segfaults en la biblioteca PCRE.

Ejemplos

Si tu quieres, en cambio, usa la lista negra de spam de Wikipedia en inglés en adición a la lista estándar de Meta-wiki. Podrías llamar a la siguiente lista en LocalSettings.php , DESPUÉS de la llamada 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"
		],
	],
];

Aquí hay un ejemplo de un conjunto enteramente local de listas de bloqueo: el administrador está utilizando el update script para generar un archivo local llamamado "wikimedia_blacklist" que guarda una copia de la lista negra de Meta-Wiki y tiene una lista negra adicional en la página wiki "Mi lista negra de spam":

$wgBlacklistSettings = [
	'spam' => [
		'files' => [
			"$IP/extensions/SpamBlacklist/wikimedia_blacklist", // Lista de Wikimedia
			   //  database      title
			'DB: wikidb My_spam_block_list',    
		],
	],
];

Registro

Por defecto, la extensión no registra ataques en el registro de la lista negra de spam . Para habilitar el registro en $wgLogSpamBlacklistHits = true;. Puedes utilizar el spamblacklist de los derechos de usuario para controlar el acceso a los historiales. Cada ingreso que hace el usuario puede verse en los registros por defecto.

Incidencias

Límite de retroceso

Si encuentras problemas con la lista negra, puede que quieras aumentar el límite de retroceso. Sin embargo por otro lado, esto puede reducir tu seguridad contra ataques DOS, cuando el límite de retroceso es un límite de rendimiento:

// Supera el límite de memoria de retroceso de expresiones regulares compatibles con Perl
// (PHP 5.3.x por defecto, 1000K, es demasiado bajo para la lista negra de spam)
ini_set( 'pcre.backtrack_limit', '8M' );

Wikis endurecidas

La lista negra de spam no te dejará editar si el wiki está endurecido. El endurecimiento incluye limitar open_basedir de modo que curl no sea encaminado, y estableciendo allow_url_fopen=Off en php.ini.

En el caso de que sea endurecida, la lista negra de spam causará una excepción cuándo Guzzle haga intentos de hacer una petición de red. El mensaje de excepción de Guzzle es, GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.

Filtro de usuarios

La lista negra de spam filtrará a todos los usuarios por defecto, incluyendo Sysops, administradores y bots. También ver Phabricator asunto T36928.

Lista blanca

Se puede mantener una lista blanca correspondiente editando la página MediaWiki:Spam-whitelist. Esto es útil si deseas invalidar algunas entradas de la lista negra de otra wiki que estés usando. Las wikis de Wikimedia, en cambio, algunas veces usan la spam blacklist para otros propósitos, como combatir el spam.

Es cuestionable qué tan eficaz sea la lista negra de spam de Wikimedia en mantener spam fuera de terceras wikis. Algún spam podría ser apuntado sólo hacia wikis de Wikimedia o sólo en terceras wikis, lo cual haría de poca ayuda la lista negra de Wikimedia en dicha tercera wikis en esos casos. También, algunas terceras wikis podrían preferir que usuarios puedan citar de fuentes que no sean consideradas fiables en Wikipedia, o que Wikipedia lo ha considerado tan ideológicamente ofensivo como para justificar el bloqueo. A veces lo que una wiki considera inútil spam, otro wiki podría considerarlo útil.

Los usuarios no siempre se darán cuenta de que, cuando un enlace es rechazado como spameo, no necesariamente significa que el wiki individual en la que se está editando ha decidido específicamente escoger el bloqueo de esa URL. Sin embargo, el sistema de administradores del wiki podría querer editar Manual:System messages en MediaWiki:Spamprotectiontext y/o MediaWiki:Spamprotectionmatch en tu wiki para invitar a usuarios a dar sugerencias en MediaWiki talk:Spam-whitelist para páginas que deberían ser añadidas por un Manual:Administradores en la lista blanca. Por ejemplo, podrías colocar para MediaWiki:Spamprotectiontext:

El texto que desabas guardar fue bloqueado por el filtro de spam. Esto es causado probablemente por un enlace a un sitio externo qe está en la lista negra. {{SITENAME}} mantiene [[MediaWiki:Spam-blacklist|su propia lista negra]]; sin embargo, la mayor parte del bloqueo se realiza mediante [[metawikimedia:Spam-blacklist|la lista negra de Meta-Wiki]], así que este bloqueo no necesariamente debería ser interpretado como una indicación de que {{SITENAME}} tomó la decisión de bloquear ese texto en particular (o URL). Si te gustaría que ese texto (o URL) sea añadida a [[MediaWiki:Spam-whitelist|la lista blanca local]], para que usuarios de {{SITENAME}} no sean bloqueados de añadir a las páginas, por favor has una solicitud en [[MediaWiki talk:Spam-whitelist]]. Un [[Project:Sysops|sysop]] te responderá con una decisión con respecto a la página si debe o no ser añadida a la lista blanca.

Notas

  • Esta extensión examina solamente los enlaces externos nuevos añadidos por editores del wiki. Para comprobar los agentes de usuarios, añada la extensión Bad Behaviour o Akismet. Así como las diferentes herramientas para combatir el spam en MediaWiki, use diferentes métodos para detectar abuso, los salvavidas son los mejores en combinación.
  • La lista de actualización de script Extension:SpamBlacklist/update script, es un script cron que puede automatizar las actualizaciones de las listas de bloqueo compartidas. Si estás usando memcached, también tienes que borrar la key spam_blacklist_regexes (por ejemplo, usando maintenance/mcc.php).
  • No hay posibilidad de permitir que algunos usuarios invaliden la lista negra de spam. Véase bugzilla:34928.

Uso

Sintaxis de la lista negra

Si deseas crear una lista negra personalizada o modificar una lista negra existente, aquí está la sintaxis:

Todo lo que aparezca en una línea después del carácter «#» se ignora (se usa para comentarios). Cualquier otra cadena de texto se interpretará como un fragmento de expresión regular que solamente se evaluará contra direcciones URL.

Notas
  • No añadas «http://». Esto provocaría un error, ya que la expresión regular solamente se evaluará después del «http://» (o «https://») en cada URL.
  • Además, «www» tampoco hace falta, ya que la expresión regular se evaluará contra cualquier subdominio. Al indicar explícitamente «www\.», se puede evaluar contra subdominios específicos.
  • Los anclajes (?<=//|\.) y $ coinciden con el principio y el final del nombre del dominio, no al principio y al final de la URL. El anclaje regular ^ no tiene ningún uso.
  • No hace falta evitar las barras con barras invertidas. Esto lo hace automáticamente el script.
Ejemplo

La siguiente línea bloqueará todas las URLs que contengan la cadena "example.com", excepto en donde es inmediatamente precedido o seguido por una letra o un número.

\bexample\.com\b

Estas están bloqueadas:

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

These are not blocked:

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

Comportamiento

La extensión crea una sola expresión regular similar a /https?:\/\/[a-z0-9\-.]*(línea 1|línea 2|línea 3|...)/Si (donde todas las barras diagonales dentro de las líneas están evitadas automáticamente). La almacena en un pequeño fichero llamado «loader» para evitar cargar todo el código cada vez que se visita una página. El desempeño visual de la página no se verá afectada incluso si no estas usando un caché bytecode, aunque usar caché es muy recomendado para cualquier instalación MediaWiki.

La expresión regular en sí generalmente añade una cabecera insignificante para guardar páginas (en el orden de unos 100ms en nuestra experiencia). Sin embargo, cargando el archivo de spam desde nuestro disco o base de datos y construyendo las expresiones regulares, puede tomarte una cantidad significativa de tiempo dependiendo de tu equipo. Si te parece que habilitando esta extensión los guardades se tardan excesivamente, trata installando un caché bytecode que lo soporte. Esta extensión guardará en caché las expresiones regulares construidas si dicho sistema está presente.

Si estás compartiendo un servidor y cache con varios wikis, puedes mejorar el rendimiento de la caché modificando getSharedBlacklists y clearCache en SpamBlacklist_body.php al utilizar $wgSharedUploadDBname (o una DB específica si no tienes una compartida DB cargada) en vez de $wgDBname . ¡Asegúrate de obtener todas las referencias! Las expresiones regulares de las páginas separadas MediaWiki:Spam-blacklist y MediaWiki:Spam-whitelist en cada wiki todavía serán aplicadas.

Servidores externos de listas negras (RBL)

En su forma estándar, esta extensión requiere que la lista negra sea construida manualmente. Mientras que los comodines de expresiones regulares son permitidas y una lista negra original de un wiki puede ser re-utilizado por muchos otros, todavía requirirá hacer algún esfuerzo para añadir patrones nuevos en respuesta a spam o remover patrones que generan falsos positivos.

Mucho de este esfuerzo puede ser reducido complementando las expresiones regulares de spam con dominios conocidos anunciados en correos electrónicos no deseados. Las expresiones regulares captarán patrones comunes (como "casino-" o "-viagra") mientras que el servidor externo de lista negra automáticamente se actualizará con nombres específicos de los sitios promovidos mediante el spam.

En la función filter() en SpamBlacklist_body.php, aproximadamente hasta la mitad entre el inicio del archivo y el final, están las líneas:

       # Do the match
       wfDebugLog( 'SpamBlacklist', "Checking text against " . count( $blacklists ) .
           " regexes: " . implode( ', ', $blacklists ) . "\n" );

Directamente por encima de esta sección (en el cuál las expresiones regulares actuales prueban en los enlaces extraídos), uno podría añadir un código adicional para comprobar los servidores externos RBL:

        # Do RBL checks
        $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;
                        }
                   }
              }
        }

        # if no match found on RBL server, continue normally with regex tests...

Esto asegura que, si una edición contiene URLs de dominios de spam ya bloqueados, un error puede ser mostrado al usuario indicando que el enlace no puede ser guardado debido a que aparece en una lista externa de bloqueo de spam. Si nada es encontrado, las pruebas de expresiones regulares restantes están permitidas para correr normalmente, de modo que cualquier 'patrón sospechoso' manualmente especificado en el URL puede ser identificado y bloqueado.

Nota que los servidores RBL enlistan solo los nombres de dominio base - no la ruta URL completa - así que http://example.com/casino-viagra-lottery.html activará las RBL sólo si el propio "example.com" estuviera bloqueado por nombre por el servidor externo. Sin embargo, la expresión regular sería capaz de bloquear en cualquier lugar del texto en la URL y su ruta, desde "example" hasta "lottery" y todo lo que hay en medio. Ambas aproximaciones llevan algún riesgo de falsos positivos - el regex debido al uso de expresiones comodín, y el RBL externo ya que estos servidores suelen crearse para otros fines - como el control del correo electrónico spam abusivo - y que puede incluir dominios que no se dedican al spam de foros, wikis, blogs o libros de visitas per se.

Otras herramientas antispam

Hay varios manuales útiles en mediawiki.org para combatir el spam y otros vandalismos:

Otras extensiones antispam y antivandalismo incluyen:

Véase también

  • Listas negras compatibles (esta es solo una pequeña muestra, hay muchísimas más)