Rozšíření:AccessControl
Pokud potřebujete omezený přístup na stránku nebo částečnou stránku, doporučujeme vám nainstalovat vhodný balíček pro správu obsahu. MediaWiki nebyla napsána tak, aby poskytovala omezení přístupu na stránku, a téměř všechny hacky nebo záplaty slibující je přidat budou pravděpodobně mít někde chyby, které by mohly vést k odhalení důvěrných dat. Nejsme zodpovědní za to, že něco unikne.
Další podrobnosti najdete na Security issues with authorization extensions |
![]() Stav rozšíření: stabilní |
|
---|---|
Zavádění | Uživatelská práva , Rozšíření syntaktického analyzátoru , Tag |
Popis | Umožňuje omezit přístup k vybraným stránkám na základě interních skupin, nebo seznamů uživatelů vytvářených přímo uživateli. |
Napsal(i) | Aleš Kapica (Wantdiskuse) |
Nejnovější verze | 4.1 (2021-05-13) |
Zásady kompatibility | Hlavní vývojová větev je zpětně kompatibilní. |
MediaWiki | 1.29+ |
PHP | 7.2+ |
Změny v databázi | dělá |
Licence | GNU General Public License 2.0 nebo pozdější |
Zdrojový kód | |
Příklad | Support DCEwiki nebo Thewoodcraft.org |
|
|
<accesscontrol> (not need anymore) |
|
Quarterly downloads | 33 (Ranked 132nd) |
Přeložte rozšíření AccessControl, používá-li lokalizaci z translatewiki.net | |
Problémy | Otevřené úkoly · Nahlásit chybu |
Rozšíření AccessControl umožňuje omezit přístup k vybraným stránkám na základě interních skupin, nebo seznamů uživatelů vytvářených přímo uživateli.
MediaWiki není navržená jako CMS (Content Management System), který by umožňoval sofistikovanější nastavení práv, proto se to musí tam, kde je požadavek na ochranu citlivých dat, např. při nasazení v korporátní sféře, nebo na školním intranetu, řešit pomocí rozšíření. Pro tento účel byl vyvinut AccessControl.
Jak tohle rozšíření splňuje požadavky na zabezpečení
- Zdroje Atom/RSS, rozdíly a odkazy na revize
- Obsah stránky je chráněn, ale při otevření stránky z historie se objeví část nezpracovaného obsahu. Pokud byla značka <accesscontrol> umístěna na začátku, potenciální útočník může vidět jména přispívajících uživatelů!
- Výpisy a vyhledávání
- Pokud není uvedeno jinak, pokud je ve výsledcích vyhledávání nějaká stránka s chráněným obsahem, uživatel je přesměrován pryč. Od verze rozšíření 2.5 může být povoleno i vyhledávání. Je ale třeba mít na paměti, že zobrazené výsledky vyhledávání mohou ohrozit citlivá data. Proto do své wiki nezapisujte citlivé informace, jako jsou hesla, která by bylo možné získat fulltextovým vyhledáváním, pokud je povoleno prohledávání obsahu stránek chráněných prostřednictvím řízení přístupu!
- Začlenění/přeřazení, související práva a další rozšíření
- Stránky obsahující značku <accesscontrol> nebo obsahující jinou stránku chráněnou značkou <accesscontrol> jsou zabezpečené. Značka <accesscontrol> je před konverzí HTML zpracována v nezpracovaném wikitextu.
- Přesměrování
- Problém s přesměrování byl opraven ve verzi 1.1
- API a odkazy akcí
- Pro každého anonymního uživatele je třída akce automaticky nastavena na hodnotu false, kromě atributu view pro nechráněné stránky. Povolené akce pro oprávněné uživatele závisí na nastavení oprávnění MediaWiki a uživatelském jménu uvedeném na stránkách seznamu přístupů.
- Upravit sekci a stránky sledování
- Možnosti jsou dostupné pouze registrovaným uživatelům, pokud jsou přihlášeni a jsou na bezpečnostním přístupovém seznamu.
- Soubory a obrázky
- XML export (Special:Export)
- Upozornění: AccessControl verze < 2.0 byla založena na háčku nechráněném ze strany MediaWiki před exportem stránek do prostého kódu. Pokud tedy používáte AccessControl verze < 2.0, musíte zakázat speciální stránku, která zakáže export stránek z MediaWiki.
- Autorova zadní vrátka
- Rozšíření AccessControl nemá žádná "zadní vrátka" (backdoor)!
- Kešování
- Doporučuji pokud možno vypnout kešování stránek. Viz předchozí odstavec.
Více informací o případných problémech se zabezpečením můžete najít na stránce Bezpečnostní problémy s autorizačními rozšířeními.
Co nabízí
- Snadné nastavení a jednoduché použití.
- Žádné záplaty jádra MediaWiki.
- Neomezené skupiny.
- Řízení přístupu ve dvou režimech:
- Ovládání zobrazení.
- Ovládání úprav, včetně omezení ručního přístupu k úpravám při použití action=edit v URL.
- Skupiny uživatelů mohou používat libovolný jmenný prostor.
- Jmenné prostory se seznamy skupin mohou být chráněny jinou příponou.
- Skupina sysop MediaWiki může prohlížet a upravovat chráněné stránky.
- Řízeno proměnnou rozšíření
$wgAdminCanReadAll
- Řízeno proměnnou rozšíření
- Přístup může být udělen více skupinám
- Přístup pouze pro čtení může být udělen skupinám i jednotlivým uživatelům.
- Neoprávnění uživatelé mohou používat funkci vyhledávání, pouze pokud je to povoleno. Viz Jak toto rozšíření splňuje požadavky na zabezpečení webu.
Dokumentace
K rozšíření existuje rozsáhlý manuál v češtině zde, ve formě wiki stránky, připravené k překladu. Pokud se chcete podílet na vzniku jeho anglické verze můžete finančně přispět na profesionálního překladatele, jelikož autor není na překlad tak náročného textu jazykově vybaven. Tato stránka (zatím tedy pouze česká verze) je také součástí zdrojového kódu a můžete si ji, pokud chcete, naimportovat do své instance MediaWiki.
Instalace
Nová verze rozšíření 4.0 v samostatné větvi form-support
byla vyvinuta pro použití s Extension:Page Forms – jako accesslist můžete použít jakoukoli šablonu, ale stará syntaxe accesslistů je podporována.
Byly také implementovány změny pro použití s VisualEditor.
Můžete získat kód z git:
git clone -b form-support https://gerrit.wikimedia.org/r/p/mediawiki/extensions/AccessControl.git
Krok 1: soubor Local Settings
- Přidejte na konec vašeho souboru LocalSettings.php následující řádky:
require_once "extensions/AccessControl/AccessControl.php";
#if this one can't run it you can try this
wfLoadExtension( 'AccessControl' );
- Přidejte jmenný prostor do souboru LocalSettings.php za účelem vytváření skupin. If you're not sure which namespace ID to use, then use 730 and 731 as detailed at the extension defalt namespaces listing. See step 2 for more information on how to do this.
- Další informace získáte na stránce Manual:Using custom namespaces .
- Zkontrolujte nastavení v AccessControl.php. Ta lze nastavit v LocalSettings.php:
$wgAdminCanReadAll = true; // sysop users can read all restricted pages
$wgAccessControlRedirect = false; // false disables AccessControl's redirection,
// thus no longer controlling access based on
// the "<accesscontrol>" tag.
Krok 2: Vytvoření skupiny uživatelů
- Uživatelský seznam musí být vytvořen v hlavním jmenném prostoru. U původní verze to bylo jedno, ale pak se změnil kód MediaWiki. Přečtěte si prosím níže uvedené poznámky.
Skupiny uživatelů jsou jednoduše standardní wiki stránky, které jsou součástí jiného než výchozího jmenného prostoru. Pro snadné použití se doporučuje vytvořit specifický vlastní jmenný prostor pro explicitní účely správy stránek seznamu řízení přístupu 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.
- Vytvořte wiki stránku se seznamem uživatelů v libovolném jmenném prostoru[1]
- Nestačí jednoduše vytvořit stránku s dvojtečkou (:) v názvu, toto rozšíření vyžaduje použití jmenného prostoru a jedné nebo více stránek v rámci jmenných prostorů
- Příklad názvu stránky: My:Group
- Jmenný prostor je My
- Stránka skupiny je Group
- Toto je název skupiny uživatelů
- Uživatelé jsou přidáni do skupiny v seznamu s odrážkami
- Příklad obsahu stránky
- Předpokládejme, že jmenný prostor IT existuje
- Všimněte si, že ve verzi 3.0 musíte také zaregistrovat jmenný prostor IT buď v LocalSettings.php, např.
$wgAccessControlNamespaces = array(NS_IT);
nebo upravitextension.json
. Dále IT: Nemělo by být uvedeno v tagu řízení přístupu, pouze "Department"
- Všimněte si, že ve verzi 3.0 musíte také zaregistrovat jmenný prostor IT buď v LocalSettings.php, např.
- Vytvořte stránku ve jmenném prostoru s názvem "Department"
- Vytvořte ve skupině uživatele "John Doe" a "Jane Doe". Informace o skupině jsou obsaženy na stránce "Department".
- Každé uživatelské jméno se zobrazí jako položka seznamu.
- Předpokládejme, že jmenný prostor IT existuje
* John Doe
* Jane Doe (ro)
- Uživatel, za jehož uživatelským jménem v seznamu následuje "(ro)" může chráněnou stránku číst, ale ne upravit. Pro další skupiny uživatelů můžete vytvořit seznam s názvem Department v jiném uživatelském prostoru. Pamatujte, že uživatelské jméno vždy začíná velkým písmenem!
- Tipy
- K ochraně jmenného prostoru IT můžete použít rozšíření Lockdown , ale není to nutné, protože seznam uživatelů může být chráněn sám sebou přes tag
<accesscontrol>
.
Krok 3: Použijeme Access Control
- V závislosti na lokalizaci potřebuje vaše wiki vytvořené stránky, na které budou přesměrováni anonymní nebo neoprávnění uživatelé. Musíte je vytvořit předem, protože některé z nich nemají přístup na stránky z jiné stránky.
- Bezpečnost stránky zajišťuje tag <accesscontrol>. Pokud tag není nebo je stránka prázdná, je volně přístupná přihlášeným uživatelům, kteří mohou stránku číst a upravovat. Žádný uživatel, přihlášený nebo anonymní, nebude mít přístup pouze pro čtení.
- Členové ze skupin uvedených v tagu <accesscontrol> mohou upravovat stránku pouze v případě, že název skupiny není uveden s "(ro)" a pokud nemají v seznamu členů skupiny nastaven přístup pouze pro čtení.
- Ve výchozím nastavení je proměnná
$wgAdminCanReadAll
nastavena na true, takže členové sysop mohou upravovat stránky skupin uživatelů v libovolném jmenném prostoru.
- Příklad kódu značky
<accesscontrol>Administrátoři,IT:Department,Sales(ro)</accesscontrol>
<accesscontrol>Department</accesscontrol>
.V tomto příkladu mohou stránku číst všichni uživatelé ze skupin "Administrators", "IT:Department" a "Sales", ale pouze uživatelé ze skupiny "Administrators" (pokud existuje) a John Doe z "IT:Department" jej může upravovat.
Použití na stránkách Control Access
To je pro instalaci. Chcete-li omezit přístup na stránku pro určité skupiny uživatelů, stačí uvést názvy povolených skupin uživatelů (oddělené čárkami) jako obsah značky <accesscontrol> v horní části stránky s obsahem.
Pozor
Verze MediaWiki: | 1.21 – 1.28 |
Je důrazně doporučeno použít verzi 2.5.1.
Pro verzi < 2.3
- Zde se objevil problém ve funkci fromTemplate(), který způsoboval, že AccessControl neakceptoval tag z vložených stránek či šablon. Aktualizace je doporučena!
Pro verzi ≥ 2.0
Verze MediaWiki: | 1.18 – 1.20 |
- Stránky nemohou mít více než jeden <accesscontrol> prvek.
- Pokud je uživatel členem více skupin, předpokládá se skupina, která mu poskytuje větší přístup.
- Toto rozšíření používá háček MediaWiki, který je volán vždy, když se zobrazí výsledek vyhledávání. To znamená, že stránka, která má ACL, spustí zprávu "Access Denied" (přístup odepřen) pro koncové uživatele, kteří náhodou hledají text obsažený na chráněné stránce. Jednoduchým řešením je umístit stránky, které vyžadují AccessControl, do jiného jmenného prostoru a pak zakázat vyhledávání tohoto jmenného prostoru. I když to není ve skutečnosti chyba, je to nežádoucí chování. Klikněte sem pro příklad ukazující řešení.
Pro verzi ≤ 1.3
Verze MediaWiki: | ≤ 1.17 |
- Skupiny z MediaWiki nesmí být v lokalizované podobě! sysop nemůže být Správce atd.
- Stránka může mít více prvků <accesscontrol>, přičemž přístup je povolen ze skupin v libovolné značce.
- Anonymní uživatelé nemají přístup ke stránkám chráněným prvky <accesscontrol>.
- Pokud je proměnná
$wgAdminCanReadAll
pravdivá, sysops má vždy přístup k úpravám.
Verze MediaWiki s nimiž bylo rozšíření otestováno
form-support
git repozitáře (odkaz pro naklonování viz nahoře) byla testována na MediaWiki 1.35 což je aktuální stabilní verze MediaWiki podporovaná do září 2023.- Verze 4.0 je zastaralá (phab:T281848). Je doporučena aktualizace.
- Verze 3.0.1 byla testována na MediaWiki 1.34.0, ale je už zastaralá. Aktualizace je doporučena.
- Verze 2.5.1 byla testována na MediaWiki 1.33.0-alpha (5eb97ec)
- Verze 2.6 byla testována na MediaWiki 1.27.0-rc.0 (57f722a)
- Verze 2.5 byla testována na MediaWiki 1.27.0 (z git repozitáře)
- 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
Historie
První verze tohoto rozšíření (1.x) vycházela z rozšíření Group Based Access Control, ale neměla žádnou z jeho chyb.[2]
Související stránky
Poznámky
- ↑ Od verze 2.0 funguje pouze s ACL uloženými v hlavním jmenném prostoru. Může také chránit pouze stránky, které jsou v hlavním jmenném prostoru. K nápravě tohoto chování je třeba provést změny v
$getUsersFromPages
a$getContentPage
. Klikněte sem pro zobrazení opravené verze rozšíření, která je kompatibilní s jmennými prostory. - ↑ Na rozdíl od Group Based Access Control, už nebylo nutné pro rozdělení obsahu tagu <accesscontrol> použít zdvojené čárky, pokud bylo použito více seznamů. A také už nebylo nutné dávat oddělovač ',,' i za poslední položku.
Toto rozšíření je zahrnuto v následujících balíčcích a/nebo wiki farmách: Toto není autoritativní seznam. Některé wiki farmy/hostitelé mohou obsahovat tento extension, i když zde nejsou uvedeny. Pro potvrzení se vždy obraťte na své wiki farmy/hostitele nebo balíček. |