Manual:$wgSpamRegex/fr

Tout texte ajouté à une page wiki vérifiant cette expression régulière (dénommée regex) sera reconnu en tant que pourriel Wiki et la modification sera bloquée. $wgSpamRegex concerne tous les groupes utilisateur; même les membres des groupes utilisateur des administrateurs système (sysop) et des bureaucrates ne pourront pas enregistrer leur texte si celui-ci vérifie $wgSpamRegex. Utilisez pour pouvoir définir les règles et vous permettre également de filtrer par groupe ! $wgSpamRegex est l'une des fonctionnalités anti-pourriel intégrées les plus efficaces de MediaWiki. Cela n'arrête pas tout vandalisme, mais peut le réduire de manière drastique et presque sans impact négatif sur les utilisateurs légitimes. Les paramètres de configuration de $wgSpamRegex contrôlent la façon dont MediaWiki analyse le texte des contributions et détermine si elles relèvent de pourriel ou pas.

Un exemple conséquent
L'exemple suivant est un bon paramètrage que vous pouvez utiliser sur votre wiki, s'il est de taille moyenne ou petite et s'il fait l'objet d'attaques de pourriels. Insérez ce qui suit dans votre fichier :

Notez que l'avant-dernière ligne n'a pas de '|' à la fin de la chaîne. Ceci est dû au fait que la ligne suivante termine l'expression régulière avec le conteneur de fermeture '/' suivi du sélecteur 'i'.

Cet exemple intègre certains mots clés communs de pourriels (certains sont issus de la liste noire du pourriel de Meta-Wiki) ainsi que des techniques de blocage contre le pourriel caché dans le CSS.

Utiliser les expressions régulières pour bloquer les pourriels
Voici un tutoriel sur les expressions régulières. Essayez avec la valeur de $wgSpamRegex, et testez quelques modifications sur votre page dans le bac à sable, pour vérifier ce qui provoque un blocage. Mais faites attention, prenez soin d' éviter les faux positifs c'est à dire évitez de détecter à tord des modifications légitimes, voir ci-dessous.

La chaîne utilisée pour l'initialisation de $wgSpamRegex que vous avez faite, est une expression régulière (voir l'article Wikipedia et le manuel PHP sur les expressions régulières). L'exemple ci-dessous montre une expression régulière faite de plusieurs lignes, en utilisant la syntaxe à points de PHP pour concaténer les chaînes. Ceci rend cette longue expression régulière plus compacte mais aussi un peu plus compliquée.

Si vous créez vos propres expressions régulières vous voudrez certainement les essayer séparément dans l'évaluateur d'expression régulière PCRE (cliquer sur l'onglet PCRE sur cette page).

Exemple simple
Voici un exemple plus simple :

Rappelez-vous que l'idée est de décider - Est-ce que c'est du pourriel : oui ou non ? Avec cet exemple, toute contribution textuelle contenant ' ' sera reconnue comme étant du pourriel. Les symboles '/' au début et à la fin font partie de la syntaxe des expressions régulières.

Bloquer plusieurs mots ou domaines différents
Essayons d'étendre notre exemple pour capturer d'autres types de pourriels supplémentaires :

En utilisant un symbole '|' entre les mots, l'exemple ci-dessus va détecter plusieurs mots différents concernant le pourriel, et aussi quelques noms de domaine introduits les vandales.

$wgSpamRegex est appliquée à tous les textes de contribution, y compris les URLs des liens de pourriel. Et donc bloquer les noms de domaine peut être une manière très efficace pour se débarasser d'un vandale donné.

Evitez les faux positifs !
Le vrai challenge ici est d'éviter les faux positifs et on illustre ceci encore mieux avec un mauvais exemple :

Beaucoup de contrevenants aiment parler de ' ' (un certain type de drogue. On s'en fout? pas nous!) et donc vous seriez tenté de sélectionner ce mot comme pourriel, mais ceci va également empêcher les utilisateurs d'utiliser le mot ' .' Cette erreur est très facile. Faites attention aux paramètres de votre expression régulière. Vous voulez bloquer les contrevenants sans impacter vos utilisateurs. Ce problème peut être résolu dans de nombreux cas en incluant le modèle de limite de mot  avant et après tout mot qui pourrait être contenu dans un mot plus grand, par exemple :

Autres conseils concernant les expressions régulières
Les expressions régulières sont très puissantes. $wgSpamRegex est appliqué à l'ensemble du texte de toute la page ou de la section modifiée et pas seulement aux URLs. Il vous permet de bloquer tout ce que vous ne voulez pas voir, si vous trouvez une bonne expression régulière qui corresponde (soyez aussi précis que possible pour éviter les faux positifs). Dans la section suivante relative au pourriel caché dans le CSS nous allons utiliser cet outil.

Message de détection de pourriel
Habituellement lorsque le paramètre $wgSpamRegex détecte du pourriel, le message suivant est affiché  :


 * La page que vous vouliez enregistrer a été bloquée par le filtre anti-pourriel. Ceci est probablement causé par un lien vers un site externe appartenant à la liste noire.


 * Le texte suivant est celui qui a déclenché notre filtre anti-pourriel : [mot/nom du domaine bloqué]

Ce texte peut être modifié; il se trouve sur deux pages modifiables du wiki dans l'espace de noms MediaWiki. Cliquez sur 'Pages spéciales' &rarr; 'Données Wiki et outils : Messages système', entrez 'spampro' dans le champ 'Filtres par préfixe :' et cliquez sur 'Entrée'. Si vous voyez 'Afficher le source' au lieu de 'Modifier' dans l'onglet supérieur, alors vous n'avez pas le droit de modifier. Vous devez être connecté en tant qu'administrateur système (sysop ou l'utilisateur WikiSysop que vous avez configuré lors de l'installation).

'$1' de MediaWiki:Spamprotectionmatch affiche l'expression régulière concernée par la modification qui a déclenché le filtre anti-pourriel. Supprimez '$1' si vous voulez la masquer.

Afficher/Masquer le texte compatible
Si vous avez créé une expression régulière trop restrictive, ou si vous avez fait une erreur dans les paramètres, vous pouvez obtenir des faux positifs. En effet, l'exemple complet ci-dessus pourrait correspondre à du texte légitime en de rares circonstances (peut-être que vos utilisateurs veulent vraiment vouloir acheter du Viagra).

By displaying the text which matched, the MediaWiki:Spamprotectionmatch message helps to reduce problems caused by false positives.

It allows your users to accurately report problems to you, about your $wgSpamRegex setting.

It also allows them to figure out a workaround, so they can continue with their wiki editing.

Unfortunately it's also a very useful bit of information for spammers visiting your site. Some spammers are automated bots, so they won't be seeing this information anyway, however many spammers (believe it or not) are humans. These humans could go to the trouble of looking at the matching information, and trying to devise a workaround (e.g. just missing out the domain name that you have blocked, but linking to various other domains). It's difficult to know how prevalent this kind of behavior is, but if you wanted to make life more difficult for them. You could hide the spam matching information by simply setting your MediaWiki:Spamprotectionmatch message as empty. You should only do this if you are very aware of the above points about false positives, and have carefully designed your regexp to avoid them.

Pourriel caché dans le CSS
MediaWiki est complètement permissif quant aux balises HTML, et aux définitions de styles CSS (voir Aide:HTML dans le wikicode sur Meta-Wiki)

This has given spammers the opportunity to invent a sneaky trick to hide their spam from view. It doesn't show up on your pages, but it does show up in your edit boxes, and the changes show up in your 'recent changes' display. As such it causes confusion to your legitimate users, and that's before you consider the effects of helping a spammer by hosting their links. Generally 'CSS Hidden Spam' is all bad. Just because you can't see it (easily), doesn't mean you can ignore it.

The problem was identified by the folks at  in 2005, but has got a lot worse in 2006, to the point where it seems most MediaWiki spammers are using this trick.

We can use a regular expression to prevent the CSS tricks which they are using. Two of these are incorporated in the full example above (combined using the '|' symbol):

Pour bloquer le pourriel caché dans le CSS de la forme  :

Pour bloquer le pourriel caché dans le CSS de la forme  :

Pour une définition un peu plus restrictive vous pouvez interdire simultanément tous les attributs de la balise style :

...mais vous pourriez penser que ceci commence à restreindre vos utilisateurs davantage que vous ne l'auriez voulu.

Bloquer TOUS les liens externes
Vous pouvez bloquer tous les liens externes en utilisant l'expression régulière suivante :

Ceci est extrêmement restrictif pour les utilisateurs légitimes du wiki parce qu'ils ne peuvent plus accéder à aucun site externe. C'est une solution pauvre pour un problème de vandalisme bien qu'elle soit marginalement meilleure qu'un blocage complet.

If you are going to use this, make sure your 'MediaWiki:Spamprotectiontext' page has an explanation of what you have done.

Limiter à 100 le nombre de liens externes
Vous pouvez limiter le nombre total de liens externes autorisés par page à 100 par exemple, avec ceci

If you do this, make sure your 'MediaWiki:Spamprotectiontext' page has an explanation of what you've done.

pcre.backtrack_limit
Depuis la version 5.3.7 PHP a pcre.backtrack_limit dont la valeur par défaut est 1000000 (1M). Néanmoins ceci peut encore être trop bas. Essayez d'ajouter la ligne suivante à votre fichier « LocalSettings.php » :

Si cela n'est pas encore suffisant, vous pouvez augmenter cette limite progressivement jusqu'à ce qu'elle satisfasse les besoins actuels de vos wikis.