Extension:ConfirmEdit
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) |
|
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. |
Licence | Licence publique générale GNU v2.0 ou supérieur |
Téléchargement | |
|
|
|
|
Téléchargements trimestriels | 125 (Ranked 45th) |
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. Robot qui détecte qu'il n'y a pas eu d'action faite par l'homme (si ce n'est que cliquer simplement sur la boîte). | Inconnu |
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
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
ConfirmEdit
dans votre dossierextensions/
.
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
- 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)
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.
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)
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
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).
- Ajoutez les lignes suivantes dans
LocalSettings.php
du répertoire racine de votre installation MediaWiki.wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/FancyCaptcha' ]);
$wgCaptchaClass = 'FancyCaptcha';
- 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. - Créez les images en exécutant ceci :
python /path/to/captcha.py --font=<font> --wordlist=<wordlist> --key=<key> --output=<output> --count=<count>
- où 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).
- Placez les images que vous obtenez dans le répertoire
captcha
de votre installation. - 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
- Installez la version la plus récente de Pillow.
- Installez Python dans un répertoire au nom court, comme C:\Python\
- Créez un répertoire comme C:\Ex et placez-y les fichiers CAPTCHA.py / FONT.ttf / LIST.txt.
- 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 |
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 |
The configuration is similar to #ReCaptcha or #hCaptcha:
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/Turnstile' ]);
$wgTurnstileSiteKey= 'placez ici votre clé publique ou de site';
$wgTurnstileSecretKey= 'placez ici votre clé privée';
$wgTurnstileSendRemoteIP
est également disponible.
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
- ↑ MediaWiki:Questycaptchahelp-text, MediaWiki:Questycaptcha-edit, MediaWiki:Questycaptcha-addurl, MediaWiki:Questycaptcha-create, MediaWiki:Questycaptcha-createaccount
- ↑ Google Blog Are you a robot? Introducing “No CAPTCHA reCAPTCHA” ()
Voir aussi
- Anti-spam features
- Extension:ConfirmAccount
- Extension:InviteSignup
- Extension:SpamRegex
- Manuel:$wgSpamRegex
Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : Cette liste ne fait pas autorité. Certaines fermes de wikis ou hôtes et / ou paquets peuvent contenir cette extension même s'ils ne sont pas listés ici. Vérifiez toujours cela avec votre ferme de wikis ou votre hôte ou votre paquet avant de confirmer. |