Extension:AccessControl
MediaWiki n'est pas écrit pour fournir des restrictions d'accès sur une page donnée ou partiellement. Si ce niveau de contrôle vous est nécessaire, nous vous recommandons fortement d'utiliser un système de gestion de contenu qui le prend en charge nativement.
Les correctifs ou les extensions tierces qui promettent d'ajouter un contrôle d'accès pour une utilisation avec MediaWiki, peuvent ne pas fonctionner dans certains cas, exposant ainsi potentiellement des données confidentielles. Utilisez-les mais sous votre propre responsabilité. Ni les développeurs MediaWiki, ni la Fondation Wikimedia ne sont responsables des fuites de données qui pourraient en résulter. Ce message est ajouté à toutes les extensions de ce type et ne refléte pas forcément l'état de sécurité réel de l'extension actuelle. Pour plus de détails, voir Problèmes de sécurité avec les extensions d'autorisation. |
État de la version : stable |
|
|---|---|
| Implémentation | Droits utilisateur, Extension de l'analyseur, Balise |
| Description | Permet de restreindre l'accès à des pages spécifiques en fonction de groupes internes ou de listes de groupes à partir de l'espace utilisateur |
| Auteur(s) | Aleš Kapica (Wantdiscussion) |
| Dernière version | 6.0 (2023-03-01) |
| Politique de compatibilité | Le master conserve la compatibilité arrière. |
| MediaWiki | 1.34+ |
| PHP | 7.4+ |
| Modifie la base de données |
Non |
|
|
<accesscontrol> (not need anymore) |
|
| Licence | Licence publique générale GNU v2.0 ou ultérieur |
| Téléchargement | |
| Exemple | Support DCEwiki ou Thewoodcraft.org |
| Traduire l’extension AccessControl sur translatewiki.net si elle y est disponible | |
| Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension AccessControl permet de restreindre l'accès à des pages spécifiques en fonction de groupes internes ou de listes de groupes depuis l'espace utilisateur.
MediaWiki dans son état par défaut n'est pas conçu comme un système de gestion de contenu (CMS), mais lorsqu'il est utilisé comme intranet d'entreprise ou scolaire, cela est nécessaire pour protéger les données sensibles. AccessControl a été développé dans ce but.
Comment cette extension répond aux exigences de sécurité du site
- Flux Atom/RSS, diff et liens de révision
- le contenu de la page est protégé, mais lors de l'ouverture d'une page de l'historique, un élément de contenu brut apparaîtra. Si la balise
<accesscontrol>a été placée au début, un attaquant potentiel pourra peut-être voir le nom des utilisateurs contributeurs ! - Annonces et recherche
- sauf indication contraire, s'il existe une page avec un contenu protégé dans les résultats de recherche, l'utilisateur est redirigé. Depuis la version 2.5 de l'extension, la recherche peut également être autorisée. Mais il ne faut pas oublier que les résultats de recherche affichés peuvent compromettre des données sensibles. Par conséquent, n'écrivez pas dans votre wiki d'informations sensibles, telles que des mots de passe, qui pourraient être obtenues par une recherche plein texte si la recherche dans le contenu de pages protégées par un contrôle d'accès est autorisée !
- Inclusion / transclusion, droits connexes et autres extensions
- les pages contenant la balise
<accesscontrol>, ou incluant une autre page protégée par la balise<accesscontrol>, sont sécurisées. La balise<accesscontrol>est traitée en wikicode brut avant la conversion HTML.
- Redirections
- le problème de redirection a été corrigé dans la version 1.1
- API et liens d'action
- pour chaque utilisateur anonyme, la classe d'action est automatiquement initialisée à
false, en plus de l'attribut view pour les pages non protégées. Les actions autorisées pour les utilisateurs autorisés dépendent des paramètres d'autorisations de MediaWiki et du nom d'utilisateur répertorié dans la liste d'accès que les pages utilisent. - Modifier la section et les pages de suivi
- les options ne sont disponibles que pour les utilisateurs enregistrés s'ils sont connectés et figurent sur la liste d'accès de sécurité.
- Fichiers et images
- Export XML (Special:Export)
- Attention : AccessControl versions 2.0- était basé sur une accroche non protégée du côté MediaWiki avant d'exporter les pages en code brut. Par conséquent, si vous utilisez AccessControl en versions 2.0-, vous devez interdire la page spéciale pour interdire l'exportation des pages depuis MediaWiki.
- Porte dérobée de l'auteur
- l'extension AccessControl n'a pas de porte dérobée !
- Mise en cache
- je recommande de désactiver la mise en cache. Voir les paragraphes précédents.
La page Problèmes de sécurité avec les extensions de gestion des droits donne plus d'informations sur les problèmes potentiels concernant la sécurité.
Fonctionnalités
- Facile à installer et simple à utiliser.
- Pas de correctif dans le noyau MediaWiki.
- Groupes illimités.
- Contrôle d'accès en mode double :
- Afficher le contrôle.
- Modifier le contrôle, y compris les restrictions sur l'accès à la modification manuelle lors de l'utilisation de action=edit dans l'URL.
- Les groupes utilisateur peuvent utiliser n'importe quel espace de noms.
- Les espaces de noms avec des listes de groupes peuvent être protégés par une autre extension.
- Le groupe des administrateurs MediaWiki peut afficher et modifier les pages protégées.
- Contrôlé par la variable d'extension
$wgAdminCanReadAll
- Contrôlé par la variable d'extension
- L'accès peut être accordé à plusieurs groupes
- L'accès en lecture seule peut être accordé à la fois aux groupes et aux utilisateurs individuels.
- Les utilisateurs non autorisés peuvent utiliser la fonction de recherche uniquement si cela est autorisé. Voir comment cette extension répond aux exigences de sécurité du site.
Documentation
Le manuel basé sur la version tchèque [ en ] existe en tant que page wiki et il est en cours de préparation pour la traduction. La page du manuel fait partie du code source et peut être importée dans votre instance privée MediaWiki si vous le souhaitez.
Installation
Étape 1 : fichier Local Settings
- Vérifiez d'abord que ces variables sont initialisées dans le fichier LocalSettings.php. Si ce n'est pas le cas, déclarez-les :
$wgGroupPermissions['*']['read'] = true; $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['writeapi'] = false; $wgGroupPermissions['*']['createpage'] = false; $wgGroupPermissions['*']['createtalk'] = false;
- Ajoutez les lignes suivantes au bas de votre LocalSettings.php :
wfLoadExtension( 'AccessControl' );
Etape 2 : lire le manuel
La version 6.0 supporte l'ancienne syntax de cette extension. La nouvelle syntaxe basée sur les paramètres du modèle est très sophistiquée. Mais pour une utilisation de base, nous pouvons toujours utiliser AccessList créé par l'ancienne syntaxe, et protéger les pages par élément accesscontrol.
Utilisation
La nouvelle version dispose d'un nouveau système d'attribution des droits d'accès, basé sur la paramétrisation du modèle. Si l'analyseur syntaxique rencontre l'un des paramètres suivants lors du traitement d'un modèle, il appelle AccessControl pour vérifier si l'utilisateur a accès au contenu.
- isProtectedBy - Liste des groupes utilisateur
- readOnlyAllowedGroups - Groupes utilisateur avec accès en lecture uniquement
- editAllowedGroups - Groupes utilisateur avec accès en écriture
- readOnlyAllowedUsers - Liste des utilisateurs avec accès au site en lecture uniquement
- editAllowedUsers - Liste des utilisateurs avec accès en écriture
- readOnlyAllowedUsers - Liste des utilisateurs avec accès au site en lecture uniquement
- editAllowedGroups - Groupes utilisateur avec accès en écriture
- readOnlyAllowedGroups - Groupes utilisateur avec accès en lecture uniquement
Dans un même modèle tous les paramètres ci-dessus peuvent être utilisés en même temps; l'indentation montre leur position hiérarchique du point de vue des droits. Vous en apprendrez davantage dans la description de chaque paramètre, où des exemples sont également donnés.
editAllowedUsers
L'utilisation de ce paramètre transforme un modèle ordinaire en liste d'utilisateurs.
Chaque utilisateur dont le nom est spécifié dans ce paramètre aura le droit de modifier la page dans laquelle le modèle avec ce paramètre est inséré.
Et aussi toutes les pages qui l'utilisent dans le paramètre isProtectedBy.
Si plus d'un utilisateur est spécifié, les noms d'utilisateur sont séparés par une virgule.
Exemple simple de page auto-protégée (par exemple 'MyPage') où le code utilisé est 'Template:Warning' :
{{Warning
|1=Cette page est protégée
|editAllowedUsers=John Doe, Jane Doe
}}
Il peux être utilisé pour protéger une autre page, si le contenu WikiText utilise un modèle quelconque avec le paramètre 'isProtectedBy', où la valeur est le nom de la page auto-protégée 'MyPage'.
Voir l'exemple :
…
| isProtectedBy = MyPage
…
Il peut être (mais pas nécessairement !) modifié par Page Form.
'edit' n'est autorisée qu'aux utilisateurs vérifiés. Les extensions ConfirmAccount et ConfirmEdit (CAPTCHA) sont recommandées.
Utiliser l'ancienne syntaxe
Créer d'abord les groupes utilisateur. Il peut s'agir de n'importe quelle page stockée dans l'espace de noms principal, seule une virgule doit figurer après le premier mot dans le nom. Les listes d'utilisateurs peuvent être une page dans l'espace de noms Departement: Chaque nom d'utilisateur apparaît comme un élément de liste.
* John Doe
* Jane Doe (ro)
- Les noms d'utilisateurs listés avec (ro) pour read only à la fin peuvent seulement lire l'article protégé, mais pas le modifier. Pour les autres groupes d'utilisateurs, vous pouvez créer une autre liste de membres avec le nom Department dans un autre espace de noms. Attention, le nom d'utilisateur doit commencer par une majuscule !
- Exemple de code de balise
<accesscontrol>Administrators,IT:Department,Sales(ro)</accesscontrol>
Configuration
- Vérifiez les paramètres dans le fichier
extension.json.
Ils peuvent être initialisés dans LocalSettings.php.
$wgAdminCanReadAll = true; // les administrateurs peuvent lire toutes les pages restreintes
- Selon la langue, votre wiki a besoin de pages créées vers lesquelles les utilisateurs anonymes ou non autorisés seront redirigés. Vous devez les créer à l'avance car certains d'entre eux ne peuvent pas accéder à ces pages depuis une autre page.
- La sécurité de la page est assurée par la balise
<accesscontrol>. S'il n'y a pas de balise ou si la page est vide, elle est librement accessible aux utilisateurs connectés qui peuvent lire et modifier la page. Aucun utilisateur, connecté ou anonyme, n'aura accès en lecture seule. - Les membres des groupes répertoriés dans la balise
<accesscontrol>peuvent modifier la page uniquement si le titre du groupe n'est pas répertorié avec "(ro)" et s'ils ne disposent pas d'un accès en lecture seule défini dans la liste des membres du groupe. - Par défaut, la variable
$wgAdminCanReadAllest initialisée àtrueafin que les membres du groupe sysop puissent modifier les pages du groupe d'utilisateurs dans n'importe quel espace de noms.
Attention
Pour les versions 4.1-
| Versions de MediaWiki : | 1.29 – 1.36 |
Si pour une raison quelconque vous ne pouvez pas mettre à niveau votre MediaWiki à la version 1.39 LTS, vous pouvez continuer à utiliser la version 4.1 de la branche form-support. Si vous rencontrez un problème avec la mise à jour, parce qu'un problème s'est produit et a bloqué votre mise à jour, décrivez le sur la page de discussion. MediaWiki est un logiciel très complexe, et parfois un petit bogue peut être un gros problème pour des administrateurs sans expérience en programmation.
form-support a été développée pour être utilisée avec l'Extension:Page Forms - en tant que liste d'accès, vous pouvez utiliser n'importe quel modèle, mais l'ancienne syntaxe des listes d'accès est prise en charge.
Des modifications pour l'utilisation avec VisualEditor ont également été implémentées.
Vous pouvez obtenir le code depuis Git :
git clone -b form-support https://gerrit.wikimedia.org/r/p/mediawiki/extensions/AccessControl.git
Si votre version MediaWiki 2.6+ n'est pas recommandée pour être utilisée, c'est parce qu'elle n'est plus prise en charge par la maintenance.
| Versions de MediaWiki : | 1.21 – 1.28 |
Il est fortement recommandé d'utiliser la version 2.5.1.
Pour les versions 2.3-
- Il y avait un problème dans la fonction fromTemplate() qui faisait qu'AccessControl ignorait les balises des pages ou des modèles inclus. L'actualisation est recommandée !
Pour les versions 2.0+
| Versions de MediaWiki : | 1.18 – 1.20 |
- Les pages ne peuvent avoir qu'un seul élément
<accesscontrol>. - Si l'utilisateur est membre de plusieurs groupes, le groupe qui lui donne le plus d'accès est supposé.
- Cette extension utilise une accroche MediaWiki appelée chaque fois qu'un résultat de recherche est affiché. Cela signifie qu'une page qui a un ACL déclenchera un message Access Denied pour les utilisateurs finaux qui cherchent le texte contenu dans une page protégée. Une solution simple est de mettre les pages qui nécessitent AccessControl dans un autre espace de noms et de désactiver ensuite la recherche dans cet espace de noms. Bien que ce ne soit pas vraiment un bogue, c'est un comportement non souhaité. Cliquez ici pour un exemple montrant une solution de contournement.
Pour les versions 1.3-
| Version de MediaWiki : | ≤ 1.17 |
- Les groupes de MediaWiki ne doivent pas être sous forme localisée !
sysopne peut pas êtreSprávce, etc. - Une page peut contenir plusieurs éléments
<accesscontrol>, l'accès étant accepté à partir de groupes dans n'importe quelle balise. - Les utilisateurs anonymes n'ont pas accès aux pages protégées par les éléments
<accesscontrol>. - Si la variable
$wgAdminCanReadAllvauttrue, les sysops ont toujours l'accès en modification.
Test de version MediaWiki
form-support) a été mise à jour et testée sur la version stable actuelle de support à long terme (novembre 2026), et fusionnée dans la branche principale du dépôt Git.- La version 4.1 de la branche
form-supportdu dépôt Git (voir le lien pour cloner en haut de cette page) a été testée sur MediaWiki 1.35 l'ancienne version du support à long terme (septembre 2023) Cette version est recommandée pour l'utilisation sur MediaWiki 1.29< 1.35
Historique
La première version de cette extension (1.x) était basée sur Group Based Access Control, mais sans les bogues de l'original.[1]
- La version 4.0 est obsolète (phab:T281848). La mise à niveau est recommandée.
- La version 3.0.1 a été testée sur MediaWiki 1.34.0, mais est obsolète. Mise à niveau recommandée.
- La version 2.5.1 a été testée sur MediaWiki 1.33.0-alpha (5eb97ec)
- La version 2.6 a été testée sur MediaWiki 1.27.0-rc.0 (57f722a)
- La version 2.5 a été testée sur MediaWiki 1.27.0 (depuis le dépôt Git)
- La version 2.5 a été testée sur MediaWiki 1.22.9 (depuis le dépôt Git)
- La version 2.3 a été testée sur MediaWiki 1.22.0 (depuis le dépôt Git)
- La version 2.2 a été testée sur MediaWiki 1.22.0 (depuis le dépôt Git)
- La version 2.0 a été testée sur MediaWiki 1.19-alpha (du dépôt SVN)
- La version 1.2 a été testée sur MediaWiki 1.15.5-1 (depuis le dépôt Debian)
- La version 1.1 a été testée sur MediaWiki 1.16.0(b3). Fonctionne bien, sauf qu'il a besoin d'un changement mineur à la ligne 358 de AccessControl.php (enlever '&' du paramètre à
function controlEditAccess()). Lorsque vous consultez une page sur un serveur Linux, les balises<accesscontrol>apparaissent. Mais sur un serveur Windows, les balises ne s'affichent pas et c'est bien ! Je n'ai toujours pas compris, mais c'est acceptable pour mon application. - La version 1.1 a été testée sur MediaWiki 1.15
- La version 1.0 de cette extension a été testée et fonctionne bien sur MediaWiki > 1.12.x.
- Version 1.1 testée sur MediaWiki 1.16.1 avec un nouveau correctif de http://git.felk.cvut.cz/pub/git?p=accesscontrol.git;a=commitdiff;h=2f678deed0e4e4f77620e391c94559c7b50102a9
Voir aussi
- Manuel:Empêcher l'accès
- Extension:Semantic ACL
- PageOwnership – Gestionnaire de droits multicouche, sur le wiki entier ou sur des pages spécifiques, avec une interface conviviale
Notes
- ↑
Contrairement à Group Based Access Control, les doubles virgules ne sont pas utilisées pour diviser le contenu d'une balise
<accesscontrol>lorsque plusieurs listes d'accès sont utilisées. Une seule virgule est requise. Et il n'est pas nécessaire d'utiliser le séparateur,,à la fin du contenu de l'élément.
| Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : |
- Page specific read access extensions/fr
- Stable extensions/fr
- User rights extensions/fr
- Parser extensions/fr
- Tag extensions/fr
- EditPage::attemptSave extensions/fr
- ModifyExportQuery extensions/fr
- ParserBeforeStrip extensions/fr
- ParserFirstCallInit extensions/fr
- ShowSearchHit extensions/fr
- GetUserPermissionsErrors extensions/fr
- GPL licensed extensions/fr
- Extensions in Wikimedia version control/fr
- All extensions/fr
- Extensions included in MyWikis/fr
