Jump to content
MediaWiki

Rozšíření:Uzamčení

From mediawiki.org
This page is a translated version of the page Extension:Lockdown and the translation is 100% complete.
MediaWiki nebyla navržena tak, aby podporovala omezení přístupu pro jednotlivé stránky nebo jejich části. Pokud tuto úroveň kontroly požadujete, důrazně doporučujeme používat systém správy obsahu, který ji nativně podporuje.

Záplaty nebo rozšíření třetích stran, která tvrdí, že poskytují kontrolu přístupu, mohou obsahovat bezpečnostní chyby, které by mohly vyzradit důvěrná data. Používejte je na vlastní nebezpečí. Ani vývojáři MediaWiki, ani Wikimedia Foundation nenesou odpovědnost za jakékoli úniky dat, které by mohly vzniknout. Tato zpráva se přidává ke všem rozšířením tohoto druhu a nemusí odrážet skutečný stav zabezpečení daného rozšíření.

Více informací najdete na stránce Bezpečnostní problémy s autorizačními rozšířeními .
Příručka k rozšířením MediaWiki
Lockdown
Stav rozšíření: stabilní
Implementace Uživatelská práva
Popis Implementuje oprávnění skupiny pro jmenný prostor
Autoři Daniel Kinzler (Duesentrieb diskuse )
MediaWiki 1.31+
PHP 5.5+
  • $wgActionLockdown
  • $wgNamespacePermissionLockdown
  • $wgSpecialPageLockdown
Licence GNU General Public License 2.0 nebo novější
Stáhnout
README
Přeložte rozšíření Lockdown, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření Lockdown implementuje způsob, jak omezit přístup ke konkrétním jmenným prostorům a speciálním stránkám pro danou skupinu uživatelských skupin. To poskytuje jemněji granulovaný model zabezpečení než ten, který poskytují výchozí nastavení $wgGroupPermissions a $wgNamespaceProtection .

Následující stránky o modelu zabezpečení, který MediaWiki používá ve výchozím nastavení, by mohly být užitečné pro pochopení níže uvedených pokynů:

Instalace

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného Lockdown ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:
    cdextensions/
    gitclonehttps://gerrit.wikimedia.org/r/mediawiki/extensions/Lockdown
    
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'Lockdown' );
    
  • Vyžaduje nastavení v konfiguračním souboru.
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

Příklad

Použití uzamčení k:

  • Zabránění přístupu k Special:Export, pokud uživatel není přihlášen
  • Omezení úpravy jmenného prostoru projektu na přihlášené uživatele (registrované uživatele)

Pak můžete použít následující:

$wgSpecialPageLockdown['Export'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'user' ];

Vysvětlení a další příklady naleznete níže.

Nastavení

Upozorňujeme, že rozšíření Lockdown lze použít pouze k omezení přístupu, nikoli k jeho udělení. Pokud je přístup odepřen nějakým vestavěným nastavením MediaWiki, nelze jej povolit pomocí rozšíření Lockdown.

$wgSpecialPageLockdown

Hodnota $wgSpecialPageLockdown umožňuje určit pro každou speciální stránku, které skupiny uživatelů k ní mají přístup. Například pro omezení použití Special:Export pro přihlášené uživatele použijte v LocalSettings.php toto:

$wgSpecialPageLockdown['Export'] = [ 'user' ];

Upozorňujeme, že některé speciální stránky "nativně" vyžadují specifické oprávnění. Například oprávnění Special:MovePage, které lze použít k přesunu stránek, vyžaduje oprávnění "move" (ve výchozím nastavení udělené pouze přihlášeným uživatelům). Toto omezení nelze přepsat pomocí rozšíření Lockdown.

Některé speciální názvy stránek nejsou psány velkými písmeny tak, jak se zobrazují na wiki. Například Special:RecentChanges je interně Recentchanges, takže k jeho omezení potřebujete:

$wgSpecialPageLockdown['Recentchanges'] = [ 'user' ];

Úplný seznam speciálních názvů stránek je k dispozici v souboru "MessagesEn.php" (pole ($specialPageAliases)) nebo alternativně můžete použít modul API "siteinfo", např. /api.php?action=query&meta=siteinfo&siprop=specialpagealiases ve vaší wiki.

$wgActionLockdown

$wgActionLockdown umožňuje určit pro každou akci, které skupiny uživatelů k ní mají přístup. Například chcete-li omezit používání stránky historie pouze na přihlášené uživatele, použijte v LocalSettings.php toto:

$wgActionLockdown['history'] = [ 'user' ];

Upozorňujeme, že některé akce nelze tímto způsobem uzamknout. Zejména to nebude fungovat pro akci ajax.

$wgNamespacePermissionLockdown

$wgNamespacePermissionLockdown umožňuje omezit, které skupiny uživatelů mají která oprávnění v jakém jmenném prostoru. Například chcete-li udělit přístup k zápisu do jmenného prostoru projektu pouze členům skupiny sysop, použijte toto:

$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'sysop' ];

Podporovány jsou zástupné znaky buď pro jmenný prostor, nebo pro oprávnění (ale ne pro obojí najednou). Přednost mají konkrétnější definice:

$wgNamespacePermissionLockdown[NS_PROJECT]['*'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ '*' ];
$wgNamespacePermissionLockdown['*']['move'] = [ 'autoconfirmed' ];

První dva řádky omezují všechna oprávnění v jmenném prostoru projektu na členy skupiny sysop, ale stále umožňují čtení komukoli. Třetí řádek omezuje přesuny stránek ve všech jmenných prostorech na členy automaticky potvrzené skupiny.

Všimněte si, že tímto způsobem nemůžete udělit oprávnění, která nebyla povolena vestavěným nastavením $wgGroupPermissions. Následující kód neumožňuje běžným uživatelům hlídat úpravy v hlavním jmenném prostoru:

$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];

Místo toho byste museli toto právo nejprve udělit v $wgGroupPermissions a poté jej znovu omezit pomocí $wgNamespacePermissionLockdown:

$wgGroupPermissions['user']['patrol'] = true;
$wgNamespacePermissionLockdown['*']['patrol'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];

Všimněte si, že při omezení přístupu pro čtení na jmenný prostor lze toto omezení snadno obejít, pokud má uživatel přístup pro čtení k jakémukoli jinému jmennému prostoru: Zahrnutím stránky chráněné proti čtení jako šablony ji lze zviditelnit. Abyste se tomu vyhnuli, museli byste zakázat používání stránek z daného jmenného prostoru jako šablon přidáním ID jmenného prostoru k $wgNonincludableNamespaces :

$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ 'user' ];
$wgNonincludableNamespaces[] = NS_PROJECT;

Uživatel, který má oprávnění ke čtení i přesouvání stránky, ji může přesunout do jmenného prostoru, který je čitelný pro něj, ale ne pro ostatní. To může stránku efektivně skrýt před ostatními uživateli. Upozorňujeme, že samotné oprávnění k přesunu nestačí – uživatelé musí mít také možnost zobrazit zdrojovou stránku, aby ji mohli přesunout.

Samozřejmě můžete také použít Lockdown s vlastními jmennými prostory definovanými pomocí $wgExtraNamespaces :

// definování vlastních jmenných prostorů
$wgExtraNamespaces[100] = 'Private';
$wgExtraNamespaces[101] = 'Private_talk';
// omezení oprávnění "čtení" na přihlášené uživatele
$wgNamespacePermissionLockdown[100]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[101]['read'] = [ 'user' ];
// zabránění zahrnutí stránek z daného jmenného prostoru
$wgNonincludableNamespaces[] = 100;
$wgNonincludableNamespaces[] = 101;

Všimněte si, že vlastní jmenné prostory by měly být vždy definovány v párech, vlastní jmenný prostor (se sudým ID) a související jmenný prostor diskuse (s lichým ID).

Pokud chcete k odkazování na jmenné prostory použít konstanty, musíte je definovat:

// definujte konstanty pro vlastní jmenné prostory pro čitelnější konfiguraci
define('NS_PRIVATE', 100);
define('NS_PRIVATE_TALK', 101);
// definování vlastních jmenných prostorů
$wgExtraNamespaces[NS_PRIVATE] = 'Private';
$wgExtraNamespaces[NS_PRIVATE_TALK] = 'Private_talk';
// omezení oprávnění "čtení" na přihlášené uživatele
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PRIVATE_TALK]['read'] = [ 'user' ];
// zabránění zahrnutí stránek z daného jmenného prostoru
$wgNonincludableNamespaces[] = NS_PRIVATE;
$wgNonincludableNamespaces[] = NS_PRIVATE_TALK;

Můžete také použít array_fill() k omezení více jmenných prostorů najednou, např. pokud chcete omezit úpravy jmenných prostorů 0 až 2009 pouze pro sysopy:

$wgNamespacePermissionLockdown = array_fill( 0, 2010, [ 'edit' => [ 'sysop' ] ] );

$wgNamespacePermissionLockdown versus $wgActionLockdown

$wgActionLockdown je v procesu zpracování požadavků kontrolována podstatně dříve (v háčku MediaWikiPerformAction) než $wgNamespacePermissionLockdown (která je kontrolována v háčku getUserPermissionsErrors).

Pokud se pokusíte o akci, kterou $wgActionLockdown nepovoluje, zobrazí se chyba oprávnění. Podobně $wgNamespacePermissionLockdown umožňuje koncovému uživateli zjistit, které skupiny mohou akci provést.

Správa skupin

Na stránce Special:Userrights můžete ovládat, který uživatel patří do kterých skupin. Navrhovány budou pouze existující skupiny, ale novou skupinu můžete "vytvořit" vytvořením položky v proměnné $wgGroupPermissions (i když tam ve skutečnosti nepotřebujete nastavovat oprávnění, ale musí se objevit na levé straně pole). Například:

$wgGroupPermissions['somegroupname']['read'] = true;

Více informací naleznete na stránkách Nápověda:Uživatelská práva, Příručka:Uživatelská práva a správa.

Další opatření

Nápověda: Obrázky a další nahrané soubory

Obrázky a další nahrané soubory lze stále zobrazit a zahrnout na libovolnou stránku. Ochrany v jmenném prostoru Image tomu nebrání. Informace o tom, jak zabránit neoprávněnému přístupu k obrázkům, naleznete v části Autorizace obrázků . Viz též:

Související odkazy

  • GroupManager (BlueSpice) – pro přidávání, úpravu a mazání uživatelských skupin
  • PermissionManager (BlueSpice) – pro správu uživatelských práv skupin uživatelů
  • UserProtect – umožňuje ochranu pro jednotlivé uživatele, práva a stránky.
  • PageOwnership – univerzální správce oprávnění, celá wiki nebo konkrétní stránky s přátelským rozhraním
  • AccessControl – umožňuje omezit přístup ke konkrétním stránkám a souborům
  • CategoryLockdown – umožňuje omezit přístup podle kategorie a skupiny
  • DisableSpecialPages – umožňuje znepřístupnit speciální stránku
  • CrawlerProtection – blokuje anonymní uživatele v provádění akcí a přístupu ke speciálním stránkám, které nejčastěji zneužívají roboti s umělou inteligencí.
  • kompletní seznam v: Category:User rights extensions cs
Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích:

AltStyle によって変換されたページ (->オリジナル) /