Open main menu

Rozšíření:AccessControl

This page is a translated version of the page Extension:AccessControl and the translation is 60% complete.

Other languages:
English • ‎dansk • ‎čeština • ‎中文 • ‎日本語
I stopped being an maintainer of this extension because I had a problem with web access to Gerrit. This problem was solved during the Wikimedia Hackaton 2019 (task T222336). Nicolas Nallet has taken this opportunity for meeting with me and consultations how to expand the capabilities of this extension for using the extension Page Form for manage users access lists. The result is a comprehensive redesign of the code which is currently in the test stage. You can track the current development status 3.0-beta version over the public web page of Git repository (new version is tested on thewoodcraft.org, you can try i.e. test pages from category for test pages. --Want (talk) 17:51, 3 June 2019 (UTC)
Základní informace k tomuto rozšíření MediaWiki
OOjs UI icon advanced.svg
AccessControl
Stav rozšíření: bez správce
Zavádí User rights, 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 (Wanttalk)
Aktuální verze 2.6 (2016-06-06)
MediaWiki MW 1.23+ ≥ AC 2.6 (recommended),
MW 1.21.x + 1.22.x ≥ AC 2.5 (obsolete),
MW 1.18.x - 1.20.x = AC 2.1 (obsolete),
MW 1.16 ≤ AC 1.3 (obsolete)
PHP 5.4+
Změny v databázi nedělá
Licence GNU General Public License 2.0 or later
Zdrojový kód
Příklad DCEwiki or Thewoodcraft.org
Přidané tagy
<accesscontrol>
Použité háčky (hooks)
ParserFirstCallInit
userCan
UnknownAction
Přeložte rozšíření AccessControl, jsou-li dostupné jeho lokalizační zprávy na webu translatewiki.net
Podívejte se kdo a v jaké verzi toto rozšíření používá.
Issues Open tasks · Report a bug

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í. A právě pro tento účel bylo vytvořeno rozšíření AccessControl.

Contents

Jak tohle rozšíření splňuje požadavky na zabezpečení

  Varování: Je doporučeno používat pokud možno poslední stabilní verzi MediaWikim protože starší verze mají vždy známé nedostatky, které lze nejrůznějšími způsoby zneužít!
Atom/RSS feeds, diff, & revision links 
Page content is protected, but when opening a page from history a piece of raw content will appear. If the <accesscontrol> tag was placed at the beginning, a potential attacker may be able to see the names of contributing users!
Listings & search 
Unless otherwise noted, if there is any page with protected content in search results, the user is redirected away. Since extension version 2.5, searching may be allowed too. But it should be borne in mind that the displayed search results can compromise sensitive data. Therefore, do not write in your wiki sensitive information, such as passwords, that could be obtained through a fulltext search if searching through the contents of pages protected through an access control is allowed!
Inclusion/transclusion, related rights, & other extensions
Pages containing the <accesscontrol> tag, or including another page protected by the <accesscontrol> tag, are secure. The <accesscontrol> tag is processed in raw wikitext before HTML conversion.
  Varování: When using DynamicPageList (third-party), you must know that this extension selects from content pages before the parser analyzes wikitext. Protection of generated pages by an <accesscontrol> tag depends on the tag being included in the content of new page.
Přesměrování 
Problém s přesměrování byl opraven ve verzi 1.1
API & action links
For each anonymous user the action class is automatically set to false, besides the view attribute for unprotected pages. Allowed actions for authorized users depend on the permissions settings of MediaWiki and the username listed in the access list pages use.
Edit Section & watching pages
Options are available only to registered users if they are logged in and are on the security access list.
Files & images 
Warning: The extension AccessControl does not protect files against direct access via URL! If files cannot be publicly available, they must be protected at the server level!
XML export (Special
Export) : Warning: AccessControl version < 2.0, was based on a hook unprotected from MediaWiki's side before exporting pages to raw code. Therefore, if you use AccessControl version < 2.0, you must prohibit the special page to prohibit exporting the pages from 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ůžete najít na stránce Security issues with authorization extensions.

Co nabízí

Od verze 2.1 rozšíření ověřuje i vložené stránky a šablony.
  • Snadné nastavení a jednoduché použití.
  • Žádné zásahy do jádra MediaWiki.
  • Neomezený počet skupin.
  • Ke stránkám lze nastavit dvojí způsob přístupu:
    • Jen pro čtení.
    • Včetně editace, který omezí přístup na stránku i přes manuální volání editaci s využitím action=edit v URL.
  • Uživatelské skupiny mohu být v libovolném jmenném prostoru.
    • Jmenné prostory se seznamy skupin lze chránit přes jiná rozšíření.
  • Chráněné stránky mohou prohlížet a editovat členové skupiny administrátorů MediaWiki, pokud je to povoleno.
    • To se povoluje přes proměnnou rozšíření $wgAdminCanReadAll
  • Přístup lze nastavit pro více skupin současně.
  • Read-only přístup může být nastaven jak pro skupinu, tak individuálně v rámci skupiny.
  • Anonymní uživatelé mohou použít vyhledávání pouze pokud je to povoleno. Viz jakým způsobem tohle rozšíření řeší zabezpečení stránky.

Dokumentace

Stáhněte si rozšíření z https://github.com/wikimedia/mediawiki-extensions-AccessControl. A umístěte do adresáře, kde má vaše mediawiki uložená rozšíření.

Instalace

Krok 1: soubor Local Settings

  • Přidejte na konec vašeho souboru LocalSettings.php následující řádky:
require_once "extensions/AccessControl/AccessControl.php";
  • Check the settings in AccessControl.php. These can be set in LocalSettings.php:
$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.

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.

User groups are simply standard wiki pages that are part of a namespace other than the default namespace. For ease of use, it is suggested that a specific custom namespace is created for the explicit purpose of managing access control list pages.

  • Create a wiki page with a users list in any namespace[1]
    • It is not sufficient to simply create a page with a colon (:) in the name, this extension requires the use of a namespace and one or more pages within namespaces
    • Page Name Example: My:Group
      • The namespace is My
      • The group page is Group
        • This is the name of user group
        • Users are added to the group in a bulleted list
    • Page Content Example
      • Presume that the namespace IT exists
      • Create a page in the namespace titled "Department"
      • Create users "John Doe" and "Jane Doe" in the group. The group information is contained on the page "Department".
      • Each username appears as a list item.
* 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!
Tips
To protect the IT namespace you can use the Lockdown extension, but you can also use the <accesscontrol> tag to protect it.

Krok 3: Použijeme Access Control

  • Depending on localization, your wiki needs pages created to which anonymous or unauthorized users will be redirected. You have to create them in advance because some of them can't access pages from another page.
  • The safety of the page is provided by the <accesscontrol> tag. If there isn't a tag or the page is empty, it's freely accessible to logged-in users that can read and edit the page. No user, logged in or anonymous, will have read-only access.
  • Members from groups listed in the <accesscontrol> tag can edit the page only if the group title isn't listed with "(ro)" and if they don't have read only access set in the group member list.
  • By default the variable $wgAdminCanReadAll is set to true so that members of 'sysop' can edit user group pages in any namespace.
  Varování: When set to false, members of sysop can't read and edit pages protected with the <accesscontrol> tag, which may lead to big trouble. This can only be remedied on the code level.
Example tag code 
<accesscontrol>Administrators,IT:Department,Sales(ro)</accesscontrol>

In this example, all users from the groups "Administrators", "IT:Department" and "Sales" can read the page but only the users from "Administrators" group (if exists) and John Doe from "IT:Department" user group can edit it.

Usage on Pages to Control Access

That is for the installation. To restrict access to a page for specific user groups, just include the names of the allowed user groups (separated by commas) as the content of the <accesscontrol> tag in the top of the content page.

Pozor

MediaWiki version: 1.21
This extension was written to allow users to create pages accessible only to a selected group of registered and logged-in users, who be could alone managed access of this page, without having what to contact a person with higher rights for it.

My original intention as the author was to allow anyone to "lock" any page just for their chosen circle of co-workers or friends, no matter to namespace where is page located. So that things that are subject to copyright protection or that contain knowledgeable know-how can be cooperatively share a band of verified users.

A workaround, which is "recommend" for version MediaWiki ≥ 2.0, goes against my idea why this extension I were made. Since version 2.6 has been into mainline code ACL a change, which was based on a misunderstanding of my original intent, it was not possible – for me as the original author – to continue as maintainer this extension, because it can't use with any wiki that uses that ACL as was originally intended.

However version 2.5.1 based on my code is still usable for every version MediaWiki, because I use installation from Git, and if there is a change in mainline MediaWiki that would require updating this code, I can guarantee that I will implement it.

Want (talk) 08:14, 3 April 2019 (UTC)

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

MediaWiki versions: 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, je akceptována skupina která poskytuje vyšší práva.
  • Toto rozšíření používá MediaWiki hook který se volá i při zobrazování výsledku vyhledávání. To znamená, že stránka, která obsahuje tag pro ACL, zavolá zprávu "Přístup odepřen" i v případě, že je nalezen text na chráněné stránce, ke které uživatel nemá práva. Ačkoli to není skutečná chyba, je to nežádoucí chování. Jednoduchým řešením je umístit stránky, které používají ochranu AccessControl, do jiného jmenného prostoru a poté zakázat jeho prohledávání

Chcete-li vidět, jak to funguje klikněte sem.

  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

MediaWiki version: 1.17
  • Groups from MediaWiki must not be in localized form! 'sysop' cannot be 'Správce' , etc.
  • A page may have multiple <accesscontrol> elements, with access accepted from groups in any tag.
  • Anonymous users do not have access to pages protected by <accesscontrol> elements.
  • If variable $wgAdminCanReadAll is true, sysops always have edit access.

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

  • 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]

Viz též

Poznámky

  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. 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.