Portál AbcLinuxu, 1. května 2025 17:32
Když jsem před téměř čtyřmi lety spouštěl náš podpůrný server http://support.dce.felk.cvut.cz vsadil jsem na MediaWiki. Vcelku jednoduchý kalkul - předpokládám, že vývoj systému na kterém běží Wikipedie hned tak neskončí.
Většina školních wiki, na které jsem tehdy natrefil měla nastaven restriktivní přístup. Tzn. že na jejich stránky se mohl dostat pouze přihlášený uživatel, který navíc byl příslušníkem příslušné instituce.
Já jsem zastávánce benevolentního přístupu - pokud neděláš bordel, můžeš spolupracovat i když nejsi z naší školy. Řešil jsem tedy otázku: "Jak v mediawiki zajistit, aby mohly v jejím rámci vznikat stránky pro uzavřené skupinky uživatelů a zároveň i pro lidi zvenčí, aniž by mě musel někdo otravovat ohledně nastavení práv?".
Natrefil jsem tenkrát na rozšíření Group Based Access Control, které umožňovalo chránit obsah stránky pomocí uživatelských seznamů editovatelných stejným způsobem jako běžné stránky. Super! Jenže to mělo nějaké mouchy. Nejdřív jsem se je pokoušel opravit, ale nakonec z toho vylezlo rozšíření vlastní - AccessControl.
Základní podmínkou pro použití ochrany přes uživatelský seznam je zaregistrovaný účet. Každý si v naší wiki tedy může založit svůj účet a začít tvořit, případně se podílet na úpravě již existujících stránek. To je hlavní rozdíl mezi anonymním a přihlášeným uživatelem.
Každý přihlášený uživatel si navíc může vytvořit vlastní seznam uživatelů, oprávněných přistupovat na jím chráněné stránky. Na tyto stránky mají kromě osob ze seznamu přístup pouze administrátoři wiki. Nikdo jiný.
Hlavní rozcestníky a kategorie jsou pro běžné uživatele uzamčeny, ale tím restrikce v podstatě končí. Čas od času kontrolujeme změny, jestli náhodou nějaký vykuk netropí neplechu.
Víc jak tři roky utekly bez toho, že by se nějaký objevil. Ovšem na sklonku minulého roku se tu a tam začali objevovat registrovaní uživatelé s už od pohledu generovaným jménem. Ze začátku jsme tomu nevěnovali příliš pozornost, ale pak začal někdo prostřednictvím takto založeného účtu vkládat stránky s nežádoucím obsahem.
Z logu jsem zjistil že to dělá někdo skriptem, který spouští z různých lokací. Tak jsem mu zatnul tipec jednoduchým opatřením - každý nově zaregistrovaný uživatel může zakládat nové stránky až po uplynutí intervalu, který spolehlivě odradí jakýkoliv skript.
Fajn. Zakládání nežádoucích stránek skončilo. Jenže registrace pseudouživatelů neustávala. Nejprve jsem zkusil hook, který byl navěšený na registrační formulář, ale nezabralo to. Tak jsem se dožral a pořádně si okouknul log v apachi.
A je pokoj. Dopsal jsem si jednu malou podmínku přímo do třídy v níž se řeší vytvoření nového účtu a je klid. Lapidárně řečeno - kontroluje se, zda-li odesílatel registračního formuláře skutečně prošel registrační procedurou.
Tiskni
Sdílej:
Not Found The requested URL /Shibboleth.sso/Login was not found on this server. Apache/2.2.16 (Debian) Server at support.dce.felk.cvut.cz Port 80BTW: když to funguje, tak je to jen v rámci vaší školy, nebo je tahle wiki v EduID federaci?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.