Rozšíření:Uzamčení
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 .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+ |
|
|
| 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
Lockdownve vaší složceextensions/.
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:Versionvaší 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í
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
- Page specific read access extensions/cs
- Stable extensions/cs
- User rights extensions/cs
- MediaWikiPerformAction extensions/cs
- SearchGetNearMatchComplete extensions/cs
- SearchableNamespaces extensions/cs
- GetUserPermissionsErrors extensions/cs
- GPL licensed extensions/cs
- Extensions in Wikimedia version control/cs
- All extensions/cs
- Extensions included in Canasta/cs
- Extensions included in MyWikis/cs
- Extensions included in Open CSP/cs
- Extensions included in ProWiki/cs
- View page extensions/cs
- Edit extensions/cs