Extension:ConfirmEdit

From mediawiki.org
This page is a translated version of the page Extension:ConfirmEdit and the translation is 94% complete.
Outdated translations are marked like this.
Cette extension est fournie avec MediaWiki 1.18 et supérieur. Ainsi vous n'avez pas besoin de la télécharger à nouveau. Néanmoins, vous devez encore suivre les autres instructions fournies.
Manuel des extensions MediaWiki
ConfirmEdit
État de la version : stable
Implémentation Action de page
Description Ajoute des CAPTCHA pour l'enregistrement des pages et pour d'autres actions utilisateur
Auteur(s)
  • Brooke Vibber
  • Florian Schmidt
  • Sam Reed
Dernière version 1.6.0 (Mises à jour continues)
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki >= 1.42
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
  • $wgAllowConfirmedEmail
  • $wgCaptchaBadLoginExpiration
  • $wgCaptchaTriggersOnNamespace
  • $wgCaptchaStorageClass
  • $wgCaptchaSessionExpiration
  • $wgCaptchaRegexes
  • $wgCaptchaWhitelistIP
  • $wgCaptchaWhitelist
  • $wgCaptchaTriggers
  • $wgCaptchaBadLoginPerUserAttempts
  • $wgCaptchaBadLoginPerUserExpiration
  • $wgCaptcha
  • $wgCaptchaBadLoginAttempts
  • skipcaptcha
Téléchargements trimestriels 186 (Ranked 36th)
Utilisé par les wikis publics 957 (Ranked 278th)
Traduire l’extension ConfirmEdit sur translatewiki.net si elle y est disponible
Rôle Vagrant confirmedit
Problèmes Tâches ouvertes · Signaler un bogue

L'extension ConfirmEdit vous permet d'utiliser différentes techniques CAPTCHA, pour essayer d'empêcher les spambots et autres outils automatisés de modifier votre wiki, ainsi que pour déjouer les tentatives de connexion automatisées qui tentent de deviner les mots de passe.

ConfirmEdit est livré avec plusieurs techniques et modules pour générer les Captcha.

Module Description Efficacité de l'arrêt du spam
SimpleCaptcha Les utilisateurs doivent résoudre un problème mathématique simple. Faible
FancyCaptcha Les utilisateurs doivent identifier une série de caractères affichés de manière stylisée. Faible
MathCaptcha Les utilisateurs doivent résoudre un problème mathématique affiché sous forme d'image. Faible
QuestyCaptcha Les utilisateurs doivent répondre à une question, à partir d'une série de questions définies par le ou les administrateurs. Très haut, jusqu'au forçage
ReCaptcha NoCaptcha JavaScript affiche un test permettant de savoir si l'utilisateur est un humain. Si le contrôle échoue, un puzzle est présenté. Moyen à faible
hCaptcha Semblable à reCAPTCHA, mais est sans doute plus efficace que reCAPTCHA en raison de son approche différente des Captcha avec facilités d'accès. Inconnu
Turnstile Cloudflare Turnstile. Human actionless (or just clicking the box) bot detector. Unknown

Certains de ces modules nécessitent un travail de configuration supplémentaire :

  • MathCaptcha nécessite à la fois la présence de TeX, et pour les versions de MediaWiki après 1.17, l'extension Math  ;
  • FancyCaptcha nécessite l'exécution d'un script Python de configuration préliminaire.

Inconvénients

Les CAPTCHA réduisent l'accessibilité et causent des inconvénients aux utilisateurs humains.

Ils ne sont pas non plus 100% efficaces contre les robots, et ils ne protégeront pas votre wiki des spammeurs qui sont prêts et capables d'utiliser le travail humain pour forcer les CAPTCHA. Vous pouvez utiliser ConfirmEdit avec d'autres fonctionnalités anti-spam. Quelle que soit la solution que vous utilisez, si vous avez un wiki publiquement modifiable, il est important de continuer à surveiller la page des « Modifications récentes ».

Installation

Il est possible que ConfirmEdit ne fonctionne pas si elle est utilisée avec une version de MediaWiki différente de celle indiquée lors de son téléchargement par le Distributeur d'extensions.
  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé ConfirmEdit dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/ConfirmEdit
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'ConfirmEdit' );
    
  • Activez le type de CAPTCHA qui doit être utilisé
  • Configurez selon les besoins
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.


Installation Vagrant :

  • Si vous utilisez Vagrant , installez avec vagrant roles enable confirmedit --provision

Types de CAPTCHA

ConfirmEdit contient différents types de CAPTCHA.

QuestyCaptcha

Ce module pose une question et l'utilisateur doit fournir la réponse. Vous fournissez la question dans la configuration. Ce module a montré qu'il offrait un mécanisme fiable contre les spambots; il présente également l'avantage d'une meilleure accessibilité car les questions textuelles peuvent être lues par les logiciels de lecture d'écran ce qui permet aux utilisateurs qui ont des problèmes de lecture (mais pas aux robots), de répondre correctement aux questions.

Ajoutez ceci à LocalSettings.php pour activer ce CAPTCHA, en mettant à jour la question-réponse :

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/QuestyCaptcha' ]);

// Ajoutez vos questions dans LocalSettings.php en utilisant ce format :
$wgCaptchaQuestions = [
	'What is the capital of France?' => 'Paris',
	'What is the capital of Spain' => 'MADRID', // Les réponses ne sont pas sensibles à la casse
	'What is the name of this wiki?' => $wgSitename, // Vous pouvez utiliser des variables
	'How many fingers does a hand have?' => [ 5, 'five' ], // Une question peut avoir plusieurs réponses
];

Cela va choisir aléatoirement une question dans la liste fournie.

Au minimum il faut un choix.

  • QuestyCaptcha n'est pas sensible à la casse. Cela fonctionne quand même lorsque la réponse est « Paris » et que l'utilisateur écrit « paris » ou si la réponse est « paris » et que l'utilisateur écrit « Paris ».
  • Si la réponse comprend un caractère spécial tel que 'ó', vous pouvez écrire une réponse avec 'ó' et une autre avec 'o' (où le 'o' remplace 'ó') au cas où. Par exemple si la réponse est « canción » vous pouvez utiliser [ 'cancion', 'canción' ] dans le cas où l'utilisateur écrit « cancion ».
  • La réponse doit être facile à deviner par un humain concerné par votre wiki mais pas par un programme automatique. Pratiquement la réponse ne doit pas être contenue dans le texte de la question; vous pouvez essayer et modifier les messages d'aide Captcha et fournir la solution pour la réponse.[1]
  • Changer simplement de question si cela s'avère inefficace; cela ne doit jamais se produire si votre wiki n'est pas particulièrement concerné.
  • N'essayez pas de réutiliser des questions qui ont déjà été utilisées dans le passé : les robots sont connus pour toujours se rappeler, la question et sa réponse, une fois qu'ils ont forcé le Captcha.
  • Il vous est même possible de générer dynamiquement des Captcha Questy dans la configuration. N'UTILISEZ PAS de copie exacte des questions dynamiques à partir du lien, elles ont été forcées par les spammeurs. Néanmoins les autres questions dynamiques, dans le style des questions présentées, sont très efficaces.
  • Il existe une extension distincte de ConfirmEdit appelée QuestyCaptchaEditor qui fournit une page spéciale sur le wiki pour gérer la ou les paires de question-réponses de QuestyCaptcha. Vous pouvez l'installer si vous souhaitez réduire l'intervention de l'administrateur système quand il s'agit de gérer les questions du CAPTCHA et leurs réponses.

ReCaptcha (NoCaptcha)

Avertissement Avertissement : ReCaptcha a été forcé par la plupart des robots ciblant des wikis, principalement à cause à son alternative d'accessibilité.

La nouvelle génération de ReCaptcha, appelée NoCaptcha, a été introduite par Google déja en décembre 2014 et réduit le besoin de résoudre un CAPTCHA par les humains.[2] En fonction du JavaScript côté utilisateur (qui ne peut pas être contrôlé par l'utilisateur administrateur), reCaptcha essaie d'identifier l'utilisateur du site en tant qu'humain en analysant le comportement de sa navigation sur la page. L'utilisateur doit cliquer ensuite sur la case à cocher « Je ne suis pas un robot » et (dans le meilleur des cas) rien d'autre pour prouver qu'il est un humain. Néanmoins dans certains cas, l'utilisateur doit encore résoudre une image CAPTCHA.

ReCaptcha ne fonctionne pas avec l'Editeur de source pour mobiles et avec certaines extensions.

Ce module implémente la nouvelle solution ReCaptcha NoCaptcha dans ConfirmEdit.

Vous avez encore besoin d'une clé publique et une clé secrète (que vous pouvez récupérer à partir du panneau de l'administrateur ReCaptcha – utilisez v2, v3 ne fonctionne pas) et installez le greffon avec :

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/ReCaptchaNoCaptcha' ]);
$wgReCaptchaSiteKey = 'placez ici votre clé publique ou clé de site';
$wgReCaptchaSecretKey = 'votre clé privée ici';

Il existe une option de configuration supplémentaire pour ce module, $wgReCaptchaSendRemoteIP (valeur par défaut : false), qui lorsqu'elle vaut true, envoie l'adresse IP de l'utilisateur courant à un serveur de Google alors que le CAPTCHA est vérifié. Vous pouvez améliorer la confidentialité de vos utilisateurs si vous gardez l'initialisation à false. Néanmoins, souvenez-vous que ce module ajoute du code JavaScript côté client, directement chargé d'un serveur Google, et qui peut déjà récupérer l'adresse IP de l'utilisateur (combiné aussi à d'autres données) et peut ne pas être limité par une option de configuration. Ceci ne fonctionne qu'avec l'éditeur MediaWiki standard.

reCAPTCHA v3

Actuellement, il n'existe aucun moyen officiel d'implémenter la version 3 du reCAPTCHA Google.

SimpleCaptcha (calculs)

Avertissement Avertissement : Ce type est utilisé par quelques wikis seulement en dehors de la WMF s'il en existe, probablement à cause de son efficacité effrayante.
Une question mathématique simple

C'est le CAPTCHA par défaut.

Ce module demande à l'utilisateur le résultat d'une simple addition ou soustraction.

Ajoutez les lignes suivantes dans LocalSettings.php à la racine de votre installation MediaWiki pour activer ce CAPTCHA :

$wgCaptchaClass = 'SimpleCaptcha';

Notez que l'affichage d'un problème mathématique trivial avec du texte brut, fournit un Captcha qui peut être résolu de manière triviale par les moyens automatiques; depuis 2012, les sites qui utilisent SimpleCaptcha reçoivent de grandes quantités de spams, ainsi que des enregistrements automatiques de nouveaux faux comptes. Les wikis qui utilisent actuellement ceci par défaut doivent par conséquent migrer vers l'un des autres CAPTCHAs.

FancyCaptcha

Avertissement Avertissement : Ce type est utilisé par quelques wikis seulement en dehors de la WMF s'il en existe, probablement à cause de son efficacité effrayante.

Ce module affiche une image stylisée d'un ensemble de caractères.

Pillow doit être installé pour créer l'ensemble des images initiales, mais il n'est plus nécessaire ensuite (peut être installé avec pip install Pillow dans la plupart des environments).

  1. Ajoutez les lignes suivantes dans LocalSettings.php du répertoire racine de votre installation MediaWiki.
    wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/FancyCaptcha' ]);
    $wgCaptchaClass = 'FancyCaptcha';
  2. Dans LocalSettings.php, initialisez la variable $wgCaptchaDirectory avec le nom du répertoire où vous placerez les images Captcha. Note: utiliser le chemin du répertoire en absolu ou relativement au répertoire d'installation de votre wiki Ci-dessous $wgCaptchaSecret est initialisé avec votre phrase secrète.
  3. Créez les images en exécutant ceci :
    python /path/to/captcha.py --font=<font> --wordlist=<wordlist> --key=<key> --output=<output> --count=<count>
    • font est un chemin vers une fonte donnée, par exemple AriBlk.TTF.
    • wordlist est un chemin vers une liste de mots, par exemple /usr/share/dict/words. (Note : sous Debian / Ubuntu, les paquets 'wbritish' et 'wamerican' fournissent de telles listes. Sous Fedora, utiliser le paquet 'words')
    • key est la phrase secrète utilisée pour initialiser $wgCaptchaSecret. Utilisez les guillemets si nécessaire.
    • output est le chemin où les images doivent être stockées (défini dans $wgCaptchaDirectory).
    • count indique le nombre d'images à générer.
    • Exemple en supposant que vous êtes dans le répertoire extensions/ConfirmEdit (emplacement des polices de caractères sous Ubuntu 6.06, il peut être différent selon votre système opératoire) :
    python captcha.py --font=/usr/share/fonts/truetype/freefont/FreeSans.ttf --wordlist=/usr/share/dict/words --key=FOO --output=../../../captcha --count=100
    • Si vous n'êtes pas satisfait du résultat des mots que vous avez générés vous pouvez simplement supprimer les images et recréer un nouvel ensemble. Comic_Sans_MS_Bold.ttf semble générer des mots relativement lisibles et vous pouvez aussi modifier la dernière ligne de captcha.py pour augmenter la taille de l'affichage (valeur par défaut : 40).
  4. Placez les images que vous obtenez dans le répertoire captcha de votre installation.
  5. Modifiez le LocalSettings.php de votre wiki : spécifiez le chemin complet de votre répertoire Captcha dans $wgCaptchaDirectory et la clé secrète que vous avez utilisée lors de la génération des captures dans $wgCaptchaSecret.
$wgCaptchaDirectory = "/.php-data/my-wiki.org/wiki/captcha";
$wgCaptchaDirectoryLevels = 0; // Une valeur positive permet de fragmenter les images en sous-répertoires
$wgCaptchaSecret = "FOO"; // Même valeur que celle que vous avez utilisée pour l'option --key dans captcha.py

Voir aussi wikitech:Generating CAPTCHAs pour la manière dont le sujet est traité à la Fondation Wikimedia.

Comment éviter les problèmes communs liés à l'utilisation de Python sous Windows
  1. Installez la version la plus récente de Pillow.
  2. Installez Python dans un répertoire au nom court, comme C:\Python\
  3. Créez un répertoire comme C:\Ex et placez-y les fichiers CAPTCHA.py / FONT.ttf / LIST.txt.
  4. Pour réaliser cela facilement, exécutez l'exemple suivant en tant que fichier batch :
C:\python\python.exe C:\Ex\CAPTCHA.py --font C:\Ex\FONT.ttf --wordlist C:\Ex\LIST.txt --key=YOURPASSWORD --output C:\Ex\ --count=20

MathCaptcha

Version de MediaWiki :
1.39
Avertissement Avertissement : Ce type est utilisé par quelques wikis seulement en dehors de la WMF s'il en existe, probablement à cause de son efficacité effrayante.
Pour cela, il faut que l'extension Math soit installée.

Ce module génère une image en utilisant TeX pour poser une question mathématique.

Initialisez les valeurs suivantes pour activer ce CAPTCHA :

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/MathCaptcha' ]);

Voir le fichier README du répertoire math pour installer ce Captcha.

hCaptcha

Version de MediaWiki :
1.35

Voir https://www.hcaptcha.com/

La configuration est similaire à ReCaptcha :

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/hCaptcha' ]);
$wgHCaptchaSiteKey = 'placez ici votre clé publique ou clé de site';
$wgHCaptchaSecretKey = 'placez ici votre clé privée';

$wgHCaptchaSendRemoteIP est également disponible.

Turnstile

Version de MediaWiki :
1.42
Currently only available in master branch of the extension.

The configuration is similar to #ReCaptcha or #hCaptcha:

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/Turnstile' ]);
$wgTurnstileSiteKey= 'your public/site key here';
$wgTurnstileSecretKey= 'your private key here';

$wgTurnstileSendRemoteIP is also available.

Configuration

Don't require CAPTCHA from some users

ConfirmEdit introduit un type de droit 'skipcaptcha' pour wgGroupPermissions . Cela vous permet de définir certains groupes qui ne verront jamais les CAPTCHA. Tout ce qui suit peut être ajouté à LocalSettings.php.

Valeurs par défaut de ConfirmEdit.php :

$wgGroupPermissions['*']['skipcaptcha'] = false;
$wgGroupPermissions['user']['skipcaptcha'] = false;
$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
$wgGroupPermissions['bot']['skipcaptcha'] = true; // robots enregistrés
$wgGroupPermissions['sysop']['skipcaptcha'] = true;

Pour éviter les Captcha aux utilisateurs ayant confirmé leur courriel, initialisez simultanément :

$wgGroupPermissions['emailconfirmed']['skipcaptcha'] = true;
$wgAllowConfirmedEmail = true;

Set actions that require CAPTCHA

Les conditions suivantes peuvent déclencher l'affichage du CAPTCHA :

  • 'edit' - activé à chaque tentative d'enregistrement de page
  • 'create' - activé à la création de page
  • 'sendemail' - déclenché lors de l'utilisation de Special:Emailuser
  • 'addurl' - déclenché sur l'enregistrement d'une page qui ajoute une ou plusieurs URLs à la page
  • 'createaccount' - activé à la création d'un nouveau compte
  • 'badlogin' - déclenché après plusieurs tentatives infructueuses de connexion issues de la même adresse IP
  • 'badloginperuser' - déclenché après plusieurs tentatives infructueuses de connexion utilisant le même non d'utilisateur

Les valeurs par défaut associées sont :

$wgCaptchaTriggers['edit'] = false;
$wgCaptchaTriggers['create'] = false;
$wgCaptchaTriggers['sendemail'] = false;
$wgCaptchaTriggers['addurl'] = true;
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin'] = true;
$wgCaptchaTriggers['badloginperuser'] = true;

Les déclencheurs edit, create et addurl peuvent être configurés par espace de noms en utilisant le paramètre $wgCaptchaTriggersOnNamespace. S'il n'y a pas de $wgCaptchaTriggersOnNamespace pour l'espace de noms actuel, le $wgCaptchaTriggers standard s'applique. Supposez donc qu'en plus des valeurs par défaut de $wgCaptchaTriggers, nous configurions ceci :

$wgCaptchaTriggersOnNamespace[NS_TALK]['addurl'] = false;
$wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true;

Ensuite, le CAPTCHA ne se déclenchera pas lors de l'ajout d'URLs à une page de discussion, mais d'un autre côté, l'utilisateur devra résoudre le CAPTCHA chaque fois qu'il essaiera de modifier une page dans l'espace de noms du projet, même s'il n'ajoute pas de lien.

Listes blanches d'URL et d'adresses IP

Il est possible de définir une liste blanche de sites de confiance connus pour lesquels le CAPTCHA ne s'applique pas lorsque l'action 'addurl' est déclenchée.

Les administrateurs système peuvent faire cela en modifiant la page du message système appelée MediaWiki:Captcha-addurl-whitelist.

Le format attendu est un ensemble d'expressions régulières (une par ligne).

Le commentaires peuvent être ajoutés à l'aide du préfixe #.

OpenStreetMap donne un exemple de son utilisation.

Cet ensemble d'expressions régulières en liste blanche peut également être défini en utilisant la variable de configuration $wgCaptchaWhitelist de LocalSettings.php pour garder secrètes, la ou les valeurs.

Voici quelques autres variables que vous pouvez ajouter à LocalSettings.php :

  • $wgCaptchaWhitelistIP - Listes d'intervalles d'adresses IP qui ne verront pas le Captcha (vous pouvez aussi utiliser MediaWiki:Captcha-ip-whitelist; voir ci-dessous pour les détails).
  • $wgAllowConfirmedEmail - Permet aux utilisateurs ayant confirmé leur adresse courriel d'envoyer des liens d'URL

Elles sont décrites plus soigneusement dans les commentaires du code

MediaWiki:Captcha-ip-whitelist peut être utilisé pour modifier les adresses IP en liste blanche ainsi que les intervalles d'adresses IP sur le wiki.

Elles doivent être séparées par des retours à la ligne.

Si tout autre caractère (en dehors d'une adresse IP ou d'un intervalle valide) est trouvé sur une ligne, il sera ignoré, mais les caractères d'espacement au début et à la fin sont autorisés.

Par exemple, une ligne avec seulement 127.0.0.1 est considérée valide mais #127.0.0.1 sera ignoré.

Expressions régulières

La variable globale wgCaptchaRegexes accepte un tableau d'expressions régulières à tester sur le texte de la page et qui déclenchera le CAPTCHA s'il y a une correspondance.

Echec des tentatives de connexion

Lorsque vous utilisez les déclencheurs badlogin ou badloginperuser, les variables de configuration suivantes contrôlent combien il y a eu de tentative de connexion en échec autorisées par adresse IP et par utilisateur avant que le CAPTCHA ne soit nécessaire, et pendant combien de temps il doit encore être appliqué :

$wgCaptchaBadLoginAttempts = 3;
$wgCaptchaBadLoginExpiration = 300; // 300 seconds = 5 minutes
$wgCaptchaBadLoginPerUserAttempts = 20;
$wgCaptchaBadLoginPerUserExpiration = 600; // 600 seconds = 10 minutes

Les déclencheurs nécessitent que $wgMainCacheType soit défini sur autre chose que CACHE_NONE dans votre LocalSettings.php; en cas de doute, ce qui suit fonctionnera toujours.

$wgMainCacheType = CACHE_ANYTHING;

Notez que ces déclencheurs ne gèrent pas les Captchas de connexion à l'API, mais les bloque carrément jusqu'à l'expiration du CAPTCHA.

Configuration de Wikimedia

Par exemple, les wikis de Wikimedia Foundation utilisent FancyCaptcha avec un ensemble personnalisé d'images et la configuration par défaut, modifiée par ce qui suit.

$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = true;

Cela signifie que seuls les utilisateurs non enregistrés et les utilisateurs récemment inscrits auront à résoudre le CAPTCHA.

Mode EmergencyCaptcha

De plus, le raccourci nommé $wmgEmergencyCaptcha est conçu pour être utilisé dans un nombre limité de situations d'urgence, par exemple en cas de vandalisme massif ou d'attaques de spam : il modifie les valeurs de déclenchement par défaut (voir ci-dessus) comme suit :

$wgCaptchaTriggers['edit'] = true; 
$wgCaptchaTriggers['create'] = true;

Par conséquent tous les utilisateurs anonymes et les nouveaux utilisateurs, doivent résoudre le CAPTCHA aussi avant d'enregistrer leurs modifications ou à la création d'une nouvelle page; ceci, en plus de la situation normale.

Limite du taux de réitérations

ConfirmEdit prend en charge le seuil de limitation des tentatives successives de renouvellement quand le CAPTCHA est faux.

Pour plus d'informations sur $wgRateLimits et comment le configurer, voir Manuel:$wgRateLimits , la clé d'action est badcaptcha.

Auteurs

L'environnement de base a été conçu largement par Brion Vibber, qui a également écrit les modules SimpleCaptcha et FancyCaptcha.

Le module MathCaptcha a été écrit par Rob Church.

Le module QuestyCaptcha a été écrit par Benjamin Lees.

Le travail supplémentaire de maintenance a été fait par Yaron Koren.

Références

  1. MediaWiki:Questycaptchahelp-text, MediaWiki:Questycaptcha-edit, MediaWiki:Questycaptcha-addurl, MediaWiki:Questycaptcha-create, MediaWiki:Questycaptcha-createaccount
  2. Google Blog Are you a robot? Introducing “No CAPTCHA reCAPTCHA” ()

Voir aussi