Extensión:SpamBlacklist

From mediawiki.org
This page is a translated version of the page Extension:SpamBlacklist and the translation is 58% 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.
Manual de extensiones de MediaWiki
SpamBlacklist
Estado de lanzamiento: estable
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 Lanzamientos de screenshots junto con MediaWiki. Master no es compatible con versiones anteriores.
MediaWiki 1.31+
Licencia GNU Licencia Pública general 2.0 o posterior
Descarga
README
  • $wgBlacklistSettings
  • $wgLogSpamBlacklistHits
  • sboverride
  • spamblacklistlog
Descargas trimestrales 51 (Ranked 100th)
Wikis públicos que lo utilizan 4,601 (Ranked 180th)
Traduce la extensión SpamBlacklist si está disponible en translatewiki.net
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

  • Descarga y extrae los archivos en un directorio denominado «SpamBlacklist» dentro de la carpeta extensions/.
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SpamBlacklist
  • Añade el siguiente código en la parte final de tu archivo LocalSettings.php :
    wfLoadExtension( 'SpamBlacklist' );
    
  • Configura la lista negra a tu conveniencia
  • Yes Hecho – Navega a Special:Version en el wiki para verificar que la extensión se haya instalado correctamente.

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.

You should create the required page name [title] in the default namespace of your wiki. If you do this, it is strongly recommended that you protect the page from general editing. Besides the obvious danger that someone may add a regex that matches everything, please note that an attacker with the ability to input arbitrary regular expressions may be able to generate segfaults in the PCRE library.

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 $updatescript para generar un archivo local llamamado "$file" 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:

However on the other hand, this can reduce your security against DOS [1] attacks, as the backtrack limit is a performance limit:

// 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 $1 de modo que $curl no sea encaminado, y estableciendo $2 en $3. Hardening includes limiting open_basedir so that curl is not on-path, and setting allow_url_fopen=Off in 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. The Guzzle exception message is, GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.

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. Some spam might be targeted only at Wikimedia wikis, or only at third-party wikis, which would make Wikimedia's blacklist of little help to said third-party wikis in those cases. Also, some third-party wikis might prefer that users be allowed to cite sources that Wikipedia does not allow. Sometimes what one wiki considers useless spam, another wiki might consider useful.

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 $1 en $2 y/o $3 en tu wiki para invitar a usuarios a dar sugerencias en $4 para páginas que deberían ser añadidas por un $sysop en la lista blanca. Por ejemplo, podrías colocar para $5: Therefore, wiki system administrators may want to edit the Manual:System messages at MediaWiki:Spamprotectiontext and/or MediaWiki:Spamprotectionmatch on your wiki to invite users to make suggestions at MediaWiki talk:Spam-whitelist for pages that should be added by a Manual:Administradores to the safe list. For example, you could put, for 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 [[$own|su propia lista negra]]; sin embargo, la mayor parte del bloqueo se realiza mediante [[$metawiki|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 [[$local|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 $talk. 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. This is probably caused by a link to a blacklisted external site. {{SITENAME}} maintains [[MediaWiki:Spam-blacklist|its own block list]]; however, most blocking is done by means of [[metawikimedia:Spam-blacklist|Meta-Wiki's block list]], so this block should not necessarily be construed as an indication that {{SITENAME}} made a decision to block this particular text (or URL). If you would like this text (or URL) to be added to [[MediaWiki:Spam-whitelist|the local spam safe list]], so that {{SITENAME}} users will not be blocked from adding it to pages, please make a request at [[MediaWiki talk:Spam-whitelist]]. A [[Project:Sysops|sysop]] will then respond on that page with a decision as to whether it should be listed as safe.

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 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.
  • Users with the sboverride can override the block list and add blocked links to pages. By default this right is only given to bots.

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.
  • The spam blacklist functions prior to abuse filters, so blacklisted domains will not show in the entries in abuse filter log (special:abuselog), and will only show in (special:log/spamblacklist).
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 $shareddb (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. Be sure to get all references! The regexes from the separate MediaWiki:Spam-blacklist and MediaWiki:Spam-whitelist pages on each wiki will still be applied.

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. The regex will catch common patterns (like "casino-" or "-viagra") while the external block list server will automatically update with names of specific sites being promoted through spam.

En la función filter() en includes/SpamBlacklist.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. If nothing is found, the remaining regex tests are allowed to run normally, so that any manually-specified 'suspicious pattern' in the URL may be identified and blocked.

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. The regex, however, would be able to block on any of the text in the URL and path, from "example" to "lottery" and everything in between. Both approaches carry some risk of false-positives - the regex because of the use of wildcard expressions, and the external RBL as these servers are often created for other purposes - such as control of abusive spam email - and may include domains which are not engaged in forum, wiki, blog or guestbook comment spam 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:

References