Extension:AccessControl

From mediawiki.org
This page is a translated version of the page Extension:AccessControl and the translation is 97% complete.
Manuel des extensions MediaWiki
OOjs UI icon advanced-invert.svg
AccessControl
É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 4.1 (2021-05-13)
Politique de compatibilité Le master conserve la compatibilité arrière.
MediaWiki 1.29+
PHP 7.2+
Modifie la base
de données
Oui
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
Exemple Support DCEwiki or Thewoodcraft.org
  • $wgAdminCanReadAll
  • $wgAccessControlRedirect
‎<accesscontrol> (not need anymore)
Traduire l’extension AccessControl sur translatewiki.net si elle y est disponible

Vérifier la matrice des utilisations et des versions.

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é à cet effet.

Comment cette extension répond aux exigences de sécurité du site

Avertissement Avertissement : Il est recommandé d'utiliser la dernière version stable de MediaWiki car les anciennes versions de MediaWiki peuvent être contournées par différentes méthodes !
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 les noms 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 des 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 texte wiki brut avant la conversion HTML.
Avertissement Avertissement : Lorsque vous utilisez DynamicPageList (tierce partie), vous devez savoir que cette extension sélectionne à partir des pages de contenu avant que l'analyseur n'analyse le texte wiki. La protection des pages générées par une balise <accesscontrol> dépend de la balise incluse dans le contenu de la nouvelle page.
Redirections
Le problème de redirection a été réparé dans la version 1.1
API & liens d'action
Pour chaque utilisateur anonyme, la classe d'action est automatiquement définie sur 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 surveillance
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
Avertissement Avertissement : L'extension AccessControl ne protège pas les fichiers contre l'accès direct via URL ! Si les fichiers ne peuvent pas être accessibles au public, ils doivent être protégés au niveau du serveur !
Export XML (Special:Export)
Attention : AccessControl version < 2.0, était basé sur un hook non protégé du côté de MediaWiki avant d'exporter les pages en code brut. Par conséquent, si vous utilisez AccessControl version < 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.

Plus d'informations sur les problèmes potentiels concernant la sécurité sont sur la page Security issues with authorization extensions.

Fonctionnalités

Depuis la version 2.1, l'extension examine également la page ou le modèle intégré.
  • Facile à installer et simple à utiliser.
  • Pas de correctifs pour le cœur de 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 d'utilisateurs 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 d'administrateurs MediaWiki peut afficher et modifier les pages protégées.
    • Contrôlé par la variable d'extension $wgAdminCanReadAll
  • L'accès peut être accordé à plusieurs groupes
  • L'accès en lecture seule peut être accordé 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

Manual (in Czech language for now) here as wiki page, but is prepared for translation. If you want to contribute to creating an English version, you must donate any amount of money to pay for a commercial translator, because the author does not have the time and skills for it. The man page (for now only Czech version) is part of the source code, and can be imported into your private MediaWiki instance if you want.

Installation

Le référentiel Git d'AccessControl a deux branches publiées. La branche principale est basée sur l'ancienne version, qui ne prend en charge que l'ancienne syntaxe des listes d'accès. Il est séparé pour la rétrocompatibilité avec les anciennes versions de MediaWiki.

Une nouvelle version de l'extension 4.0 dans la branche séparée 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 le VisualEditor ont également été mises en œuvre.

Vous pouvez obtenir le code depuis git :

git clone -b form-support https://gerrit.wikimedia.org/r/p/mediawiki/extensions/AccessControl.git
Avertissement Avertissement : Les versions 3.x sont obsolètes et une mise à niveau est recommandée, car ces versions ne vérifient pas avant d'enregistrer le code si le modèle s'inclut lui-même. MediaWiki l'autorise, mais le résultat est une page en boucle et inaccessible. La seule solution pour cela est de désactiver l'extension AccessControl, de supprimer le code problématique de la page, puis de la réactiver.

Étape 1 : Fichier de paramètres locaux

  • Ajoutez les lignes suivantes au bas de votre LocalSettings.php :
require_once "extensions/AccessControl/AccessControl.php";

#if this one can't run it you can try this

wfLoadExtension( 'AccessControl' );
$wgAdminCanReadAll = true;			// sysop users can read all restricted pages
$wgAccessControlRedirect = false;	// don't redirect from page with search results for denied and
									// anonymous users, if searching pattern is validate on any
									// protected page.

Étape 2 : Créer des groupes d'utilisateurs

  • Cette méthode a des changements dans la dernière version, veuillez consulter la note 1 au bas de cette page. (Les listes d'utilisateurs doivent être stockées dans l'espace de noms principal).

Les groupes d'utilisateurs sont simplement des pages wiki standard qui font partie d'un espace de noms autre que l'espace de noms par défaut. Pour faciliter l'utilisation, il est suggéré de créer un espace de noms personnalisé spécifique dans le but explicite de gérer les pages de liste de contrôle d'accès. For your custom namespace, if you're not sure which namespace ID to use, then use 730 and 731 as detailed at the extension defalt namespaces listing. For your convenience, IDs 730-739 are reserved for your use for this extension.

// Define constants for my additional namespaces.
define("NS_ACCESSCONTROLGROUP", 730); // This MUST be even.
define("NS_ACCESSCONTROLGROUP_TALK", 731); // This MUST be the following odd integer.

// Add namespaces.
$wgExtraNamespaces[NS_ACCESSCONTROLGROUP] = "AccessControlGroup";
$wgExtraNamespaces[NS_ACCESSCONTROLGROUP_TALK] = "AccessControlGroup_talk"; // Note underscores in the namespace name.
  • Create a wiki page with a users list in any namespace[1]
    • Il ne suffit pas de créer simplement une page avec deux-points (:) dans le nom, cette extension nécessite l'utilisation d'un espace de noms et d'une ou plusieurs pages dans les espaces de noms
    • Exemple de nom de page : Mon:Groupe
      • L'espace de nom est Mon
      • La page du groupe est Groupe
        • Ceci est le nom du groupe d'utilisateurs
        • Les utilisateurs sont ajoutés au groupe dans une liste à puces
    • Exemple de contenu de page
      • Supposons que l'espace de noms SI existe
        • Notez que dans la v3.0, vous devez également enregistrer l'espace de noms SI soit dans LocalSettings.php, par ex. $wgAccessControlNamespaces = array(NS_IT); ou modifier extension.json . De plus SI : ne doit pas être spécifié dans la balise accesscontrol, juste "Département"
      • Créez une page dans l'espace de nom intitulé "Département"
      • Créez les utilisateurs "John Doe" et "Jane Doe" dans le groupe. Les informations du groupe sont contenues sur la page "Département".
      • 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)" à la fin peuvent seulement lire l'article protégé, pas le modifier. Pour les autres groupes d'utilisateurs, vous pouvez créer une autre liste de membres avec le nom Département dans un autre espace de noms. Attention, le nom d'utilisateur doit commencer par une majuscule !
Astuces : Pour protéger l'espace de noms SI, vous pouvez utiliser l'extension Lockdown, mais vous pouvez également utiliser la balise <accesscontrol> pour le protéger.

Étape 3 : Contrôle d'Accès Supplémentaire

  • Selon la localisation, 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 $wgAdminCanReadAll est définie sur true afin que les membres de sysop puissent modifier les pages du groupe d'utilisateurs dans n'importe quel espace de noms.
Avertissement Avertissement : Lorsqu'il est défini sur false, les membres de sysop ne peuvent pas lire et modifier les pages protégées par la balise <accesscontrol>, ce qui peut entraîner de gros problèmes. Cela ne peut être résolu qu'au niveau du code.
Exemple de code de balise
<accesscontrol>Administrateurs,SI:Département,Ventes(ro)</accesscontrol>
Dans la v3.0, l'espace de noms a été automatiquement ajouté, donc <accesscontrol>Department</accesscontrol> a fonctionné pour moi.

Dans cet exemple, tous les utilisateurs des groupes "Administrateurs", "SI:Département" et "Ventes" peuvent lire la page mais seuls les utilisateurs du groupe "Administrateurs" (s'il existe) et John Doe de "SI:Département" : peuvent le modifier.

Utilisation sur les Pages pour Contrôler l'Accès

C'est pour l'installation. Pour restreindre l'accès à une page à des groupes d'utilisateurs spécifiques, incluez simplement les noms des groupes d'utilisateurs autorisés (séparés par des virgules) dans le contenu de la balise <accesscontrol> en haut de la page de contenu.

Attention

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
Avertissement Avertissement : Depuis la version 2.0, l'extension n'utilise plus les groupes d'utilisateurs du wiki (sauf sysop), uniquement les groupes créés par les listes d'accès des utilisateurs !
  • 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é.
  • This extension uses a MediaWiki hook that is called whenever a search result is displayed. This means that a page that has an ACL will trigger an "Access Denied" message for end users who happen to search for text contained in a protected page. A simple solution is to put pages that require AccessControl into another namespace and then disable searching for that namespace. Although this isn't really a bug, it is undesirable behavior. Click here for an example showing a work around.
Avertissement Avertissement : MediaWiki >= 1.21 contient un nouveau framework ContentHandler et l'extension version 2.1 est inutilisable. Utilisez AccessControl version 2.2 qui est mise à jour pour MediaWiki 1.21 et supérieur.

Pour les versions ≤ 1.3

Version de MediaWiki :
1.17
  • Les groupes de MediaWiki ne doivent pas être sous forme localisée ! sysop ne peut pas être Sprá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 $wgAdminCanReadAll est vraie, les sysops ont toujours un accès en modification.

Test de Version MediaWiki

La version 4.1 de la branche form-support du dépôt git (voir le lien pour cloner en haut de cette page) a été testée sur MediaWiki 1.35 la version stable actuelle de support à long terme (septembre 2023)
  • La version 4.0 est obsolète (phab:T281848). Mise à niveau 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)
  • Version 2.5 was tested on MediaWiki 1.22.9 (from git repository)
  • Version 2.3 was tested on MediaWiki 1.22.0 (from git repository)
  • Version 2.2 was tested on MediaWiki 1.22.0 (from git repository)
  • Version 2.0 was tested on MediaWiki 1.19-alpha (from svn repository)
  • Version 1.2 was tested on MediaWiki 1.15.5-1 (from Debian repository)
  • Version 1.1 was tested on MediaWiki 1.16.0(b3). Works fine, except that it needed a minor change to line 358 of AccessControl.php (remove '&' from parameter to function controlEditAccess() ). When viewing a page on a Linux server, the ‎<accesscontrol> tags show. But on a Windows server, the tags don't show and it is fine! Still haven't figured that one out, but it is ok for my application.
  • Version 1.1 was tested on MediaWiki 1.15
  • Version 1.0 of this extension has been tested and works fine on MediaWikis > 1.12.x.
  • Version 1.1 tested on MediaWiki 1.16.1 with new patch from http://git.felk.cvut.cz/pub/git?p=accesscontrol.git;a=commitdiff;h=2f678deed0e4e4f77620e391c94559c7b50102a9

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.[2]

Voir aussi

Notes

  1. As of version 2.0, it only works with ACLs stored in the main namespace. It also can only protect pages that are in the main namespace. Changes need to be made to $getUsersFromPages and $getContentPage to correct this behavior. Click here to see a patched version of the extension that is compatible with namespaces.
  2. 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 n'est pas nécessaire d'utiliser le séparateur ',,' à la fin du contenu de l'élément.