Rozšíření:AccessControl

This page is a translated version of the page Extension:AccessControl and the translation is 100% complete.
Základní informace k tomuto rozšíření MediaWiki
AccessControl
Stav rozšíření: stabilní
Zavádění Uživatelská práva , Rozšíření syntaktického analyzátoru , Značka
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 6.0 (2023-03-01)
Zásady kompatibility Hlavní vývojová větev zachovává zpětnou kompatibilitu.
MediaWiki 1.34+
PHP 7.4+
Změny v databázi Ne
Licence GNU General Public License 2.0 nebo pozdější
Zdrojový kód
Příklad Support DCEwiki nebo Thewoodcraft.org
  • $wgAdminCanReadAll
  • $wgAccessToHistory
  • $wgAccessControlRedirect
  • $wgAccessControlMeta
  • $wgAccessControlNamespaces
‎<accesscontrol> (not need anymore)
Čtvrtletní stahování 52 (Ranked 96th)
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 toto rozšíření splňuje požadavky na zabezpečení

  Varování: Doporučuje se používat nejnovější stabilní verzi MediaWiki, protože starší verze MediaWiki lze různými metodami obejít!
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.
  Varování: Při použití Rozšíření:DynamicPageList (third-party) musíte vědět, že toto rozšíření vybírá z obsahových stránek předtím, než analyzátor analyzuje wikitext. Ochrana vygenerovaných stránek tagem <accesscontrol> závisí na tom, zda je tag zahrnut do obsahu nové stránky.
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ů.
Uprava sekci a stránek 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
  Varování: Rozšíření AccessControl nechrání soubory před přímým přístupem přes URL! Pokud soubory nemohou být veřejně dostupné, musí být chráněny na úrovni serveru!
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)!
Mezipaměť
Doporučuji pokud možno vypnout mezipaměť 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.

Funkce

Od verze 2.1 rozšíření ověřuje i vložené stránky a šablony.
  • 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.
  • 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á příručka 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

Krok 1: Soubor Local Settings

  • Nejprve zkontrolujte, zda jste nastavili tyto proměnné v souboru LocalSettings.php . Pokud to tak ještě nemáte, omezte práva:
$wgGroupPermissions['*']['read']            = true;
$wgGroupPermissions['*']['createaccount']   = false;
$wgGroupPermissions['*']['edit']            = false;
$wgGroupPermissions['*']['writeapi']        = false;
$wgGroupPermissions['*']['createpage']      = false;
$wgGroupPermissions['*']['createtalk']      = false;
  • Přidejte na konec vašeho souboru LocalSettings.php následující řádky:
wfLoadExtension( 'AccessControl' );
Také je doporučeno znepřístupnit Speciální stránky, které by mohly být zneužity ke kompromitaci obsahu vaší wiki anonymními boty nebo uživateli. Přečtěte si soubor 'README', kde je příklad ochranného kódu pro LocalSettings.php
  Varování: Hlídejte si proměnnou $wgAccessControlRedirect! Je užitečná jen pro vývojáře, aby mohli v případě potřeby vidět výpisy kontrolních zpráv. V produkčním nasazení musí mít vždy hodnotu false.

Krok 2: Přečtěte si příručku

Verze 6.0 podporuje starou syntaxi tohoto rozšíření. Nová syntaxe založená na parametrech šablony je velmi propracovaná. Ale pro základní použití můžeme stále používat AccessList vytvořený starou syntaxí a chránit stránky pomocí prvku accesscontrol.

Používání

Nová verze má nový systém nastavení přístupových práv, založený na parametrizaci šablon. Pokud analyzátor při zpracování šablony narazí na některý z následujících parametrů, zavolá AccessControl, aby zkontroloval, zda má uživatel přístup k obsahu.

isProtectedBy - seznam skupin uživatelů
readOnlyAllowedGroups - skupiny uživatelů s přístupem pouze pro čtení
editAllowedGroups - skupiny uživatelů s přístupem k úpravám
readOnlyAllowedUsers - seznam uživatelů, kteří mohou pouze číst obsah webu
editAllowedUsers - seznam uživatelů s právy na úpravy

V rámci jedné šablony lze všechny výše uvedené parametry používat současně, takže odsazení označuje jejich hierarchické postavení z hlediska práv. Více se dozvíte v popisu každého parametru, kde budou uvedeny i příklady.

editAllowedUsers

Pomocí tohoto parametru změníte běžnou šablonu na seznam uživatelů. Každý uživatel, jehož jméno je uvedeno v tomto parametru, bude mít právo editovat stránku, do které bude šablona s tímto parametrem vložena. A také všechny stránky, které jej používají v parametru isProtectedBy. Pokud je zadán více než jeden uživatel, jsou jejich uživatelská jména oddělena čárkou.

Jednoduchý příklad stránky s vlastní ochranou (tj. 'MyPage'), kde je v kódu použit 'Template:Warning':

{{Warning
| 1 = Tato stránka je chráněna
| editAllowedUsers = John Doe, Jane Doe
}}

Můžu být použit k ochraně jiné stránky, pokud obsah wikitextu používá libovolnou šablonu s parametrem 'isProtectedBy', kde je jako hodnota název samostatně chráněná stránka 'MyPage'. Například:


| isProtectedBy = MyPage

Může být (nemusí!) editován pomocí Page Form.

Pamatujte, že MediaWiki používá transkluzi. Pokud někdo z editorů použije tuto stránku, může se stát, že nebude k dispozici více stránek na webu! AccessControl je pro použití kde je akce 'edit' povolena pouze pro ověřené uživatele. Doporučují se rozšíření ConfirmAccount a ConfirmEdit (CAPTCHA).

Použití staré syntaxe

Nejprve vytvořte skupinu uživatelů. Může to být libovolná stránka v hlavním jmenném prostoru, jedinou podmínkou je, aby obsahovala za prvním slovem dvojtečku. Seznamy uživatelů může být stránka ve jmenném prostoru s názvem "Department" (oddělení) Každé uživatelské jméno se zobrazí jako položka seznamu.

* 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!
Příklad kódu značky
<accesscontrol>Administrátoři,IT:Department,Sales(ro)</accesscontrol>

Konfigurace

  • Zkontrolujte nastavení v extension.json.

Ta lze nastavit v LocalSettings.php:

$wgAdminCanReadAll = true;			// uživatelé sysop mohou číst všechny zakázané stránky
  • 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.
  Varování: Když je nastaveno na false, členové sysop nemohou číst a upravovat stránky chráněné značkou <accesscontrol>, což může vést k velkým problémům. To lze napravit pouze na úrovni kódu.

Pozor

Pro verzi < 4.1

Verze MediaWiki:
1.29 – 1.36

Pokud z nějakého důvodu nemůžete svou wiki aktualizovat na MediaWiki verze 1.39 LTS, můžete nadále používat verzi 4.1 z větve 'form-support'. Pokud máte s aktualizací problém, protože se vyskytla během aktualizace nějaká chyba, napište do diskuze. MediaWiki je velice komplexní software a někdy i malá chyba může představovat pro méně zkušeného admina velký problém.

Nová verze rozšíření 4.0 v samostatné větvi form-support byla vyvinuta pro použití s Rozšíření: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 Gitu:

git clone -b form-support https://gerrit.wikimedia.org/r/p/mediawiki/extensions/AccessControl.git
  Varování: Verze 3.x jsou zastaralé a doporučuje se provést aktualizaci, protože tyto verze před uložením kódu nekontrolují, zda šablona obsahuje sama sebe. MediaWiki to umožňuje, ale výsledkem je zacyklená a nepřístupná stránka. Jediným řešením je zakázat rozšíření AccessControl, odstranit problematický kód ze stránky a poté jej znovu povolit.

Používá-li vaše MediaWiki rozšíření verze ≥ 2.6 vezměte na vědomí, že jde o kód, který nemá podporu správce.

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
  Varování: Od verze 2.0 rozšíření nepoužívá uživatelské skupiny wiki (výjimkou je "sysop"), pouze skupiny vytvořené pomocí uživatelských seznamů!
  • 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í.
  Varování: MediaWiki >= 1.21 obsahuje nový framework ContentHandler se kterým je verze 2.1 nepoužitelná. Použijte AccessControl verzi 2.2 která byla opravena tak aby fungovala s MediaWiki 1.21 a vyšší.

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 true, sysops má vždy přístup k úpravám.

Verze MediaWiki s nimiž bylo rozšíření otestováno

Verze 6.0 (založená na větvi form-support) byla aktualizována a otestovaná na MediaWiki 1.39.2 (aktuální stabilní verze s dlouhodobou podporou do listopadu 2026), a následně začleněna do hlavní vývojové větve git repositáře.
  • Verze 4.1 z větve form-support Git repozitáře (odkaz pro naklonování viz nahoře) byla testována na MediaWiki 1.35 což je starší stabilní verze MediaWiki s dlouhodobou podporou (do září 2023). Tuto verzi je doporučeno použít na MediaWiki 1.29< 1.35

Historie

První verze tohoto rozšíření (1.x) vycházela z rozšíření Group Based Access Control , ale neměla žádnou z jeho chyb.[1]

  • 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)
  • Verze 2.5 byla testována na MediaWiki 1.22.9 (z Git repozitáře)
  • Verze 2.3 byla testována na MediaWiki 1.22.0 (z Git repozitáře)
  • Verze 2.2 byla testována na MediaWiki 1.22.0 (z Git repozitáře)
  • Verze 2.0 byla testována na MediaWiki 1.19-alpha (z Git repozitáře)
  • Verze 1.2 byla testována na MediaWiki 1.15.5-1 (z Git repozitáře)
  • Verze 1.1 byla testována na MediaWiki 1.16.0(b3) Funguje dobře, až na to, že to potřebovalo menší změnu na řádku 358 AccessControl.php (odstranit '&' z parametru na function controlEditAccess()). Při prohlížení stránky na serveru Linux se zobrazí značky ‎<accesscontrol>. Ale na serveru Windows se značky nezobrazují a je to v pořádku! Stále jsem na to nepřišel, ale pro mou aplikaci je to v pořádku.
  • Verze 1.1 byla testována na MediaWiki 1.15
  • Verze 1.0 tohoto rozšíření byla testována a funguje dobře na MediaWiki > 1.12.x.
  • Verze 1.1 testována na MediaWiki 1.16.1 s novou opravou z http://git.felk.cvut.cz/pub/git?p=accesscontrol.git;a=commitdiff;h=2f678deed0e4e4f77620e391c94559c7b50102a9

Související odkazy

Poznámky pod čarou

  1. Na rozdíl od Group Based Access Control , už nebylo nutné pro rozdělení obsahu tagu ‎<accesscontrol>, pokud bylo použito více seznamů, použít zdvojené čárky. A také už nebylo nutné dávat oddělovač ',,' i za poslední položku.