Jetstack
Zpět na blog Blog

Veřejné stránky — části vašeho prostředí přístupné veřejnosti

Publikováno 1. července 2023

Technická ilustrace k článku Jetstacku

Ne každá interakce probíhá až po přihlášení. Zájemce vyplní na webu poptávkový formulář. Uchazeč pošle přihlášku přes veřejně vypsanou pozici. Partner nahlédne do stavového dashboardu, aby zjistil, jestli se jeho objednávky zpracovávají podle plánu. Veřejnost si prohlíží katalog produktů nebo znalostní bázi. To všechno jsou reálné situace a všechny mají stejně nepohodlný tvar, pokud provozujete firemní platformu: data leží ve vnitřním systému, ale interakce se odehrává mimo něj. Naivní řešení je postavit zvlášť veřejnou aplikaci, zduplikovat datový model, ručně napsat integrace mezi oběma světy a pak je až do skonání věků udržovat v souladu. Lepší řešení je nechat veřejné stránky obsluhovat tutéž platformu — s odpovídajícími pravidly, co a jak se zpřístupní.

Veřejné stránky v Canvasu jsou tou hlavní schopností. Kteroukoli stránku v Canvasu lze označit jako veřejnou a od té chvíle je dostupná na stabilní adrese bez přihlášení. Obsah stránky se stále řídí jejími napojeními a dynamickými oblastmi, jen se vykresluje pro anonymní návštěvníky místo pro přihlášené uživatele. Veřejné stránky tak mají celý vyjadřovací rozsah Canvasu — rozvržení, bloky, podmíněné zobrazení, počítané hodnoty, iterátory — bez nutnosti sáhnout po jiném nástroji.

Veřejné formuláře jsou protějškem pro zápis dat. Veřejně publikovaná stránka v Canvasu může obsahovat formulář, který vytváří záznamy ve vnitřním systému: poptávkový formulář vytvoří záznamy typu Poptávka, přihláška záznamy typu Uchazeč, registrace záznamy typu Člen. Formulář se staví ve stejném tvůrci formulářů jako vnitřní aplikace — se stejnými pravidly validace, stejným podmíněným zobrazováním polí i stejnými typy polí. Záznamy, které vytvoří, přistanou ve stejných tabulkách, s nimiž pracují interní pracovníci. Není potřeba udržovat žádné oddělené schéma „veřejných dat“; veřejný formulář je vstupní branou do existujícího datového modelu.

Veřejné dotazy a pohledy pokrývají čtení pro strukturovanější zpřístupnění dat. Dotaz označený jako veřejný může napájet pohled dostupný anonymním návštěvníkům — výpis katalogu, kalendář akcí, stavovou stránku, žebříček. Co je vidět, určují přístupová pravidla dotazu; citlivá data se odfiltrují už na úrovni dotazu, místo aby se spoléhalo na to, že je veřejná stránka náhodou nezobrazí. Tohle oddělení je důležité: datový model prohlásí, co je bezpečné zveřejnit, a veřejná stránka použije jen to, co model schválil.

Vlastní doména prostředí udrží veřejné stránky na adresách, které působí jako součást webu dané organizace. Veřejná stránka na portálové subdoméně prostředí vypadá jako běžná stránka té organizace; návštěvník nevidí obecnou adresu platformy ani sdílenou doménu patřící někomu jinému. Tam, kde má veřejná stránka působit jako přirozené pokračování webu organizace, drží tohle napojení na doménu celý dojem pohromadě.

Omezení počtu požadavků na veřejných koncových bodech je první linií ochrany před zneužitím. Veřejný formulář, který přijímá odesílání od anonymních návštěvníků, je z podstaty věci i formulářem, který může zahltit automatizovaný provoz. Mechanismus omezování počtu požadavků — podrobněji popsaný v článku o ochraně API — se na veřejné koncové body vztahuje s vlastními pravidly, takže nával odeslání z jednoho zdroje se přiškrtí dřív, než začne být problémem. Legitimní návštěvníci nic nepoznají; zneužívající provoz se zablokuje.

Antispamové heuristiky pokrývají tu podobu zneužití, kterou samotné omezení počtu požadavků nezachytí. Skrytá pole typu honeypot chytí roboty, kteří vyplní všechno, co vidí. Časové heuristiky označí odeslání, která dorazí nemožně rychle — člověk celý formulář za dvě vteřiny nevyplní, robot ano. Vzorce odeslání, které vypadají automatizovaně, se odfiltrují ještě předtím, než vzniknou vnitřní záznamy. Tyto pojistky platí ve výchozím stavu pro každý veřejný formulář, takže implementátoři nemusí antispam řešit zvlášť pro každou novou veřejnou plochu. Celá vrstva tu je a chrání všechny veřejné formuláře jednotně.

Veřejný přístup k souborům využívá podepsané odkazy (URL) pro případy, kdy má být soubor sdílen s anonymním návštěvníkem, ale ne obecně zveřejněn. Potvrzovací e-mail po odeslání veřejného formuláře může obsahovat odkaz na PDF s potvrzením; ten odkaz je podepsaná URL, platná po omezenou dobu, dostupná bez přihlášení, ale ne volně dohledatelná. Pro vzor „sdílet konkrétní věc s konkrétním anonymním člověkem na omezenou dobu“ jsou podepsané odkazy přesně tím pravým.

Ukládání do mezipaměti se u veřejných stránek uplatní tam, kde to obsah dovolí. Stránku katalogu, jejíž obsah se mění jen při aktualizaci samotného katalogu, lze dalším návštěvníkům servírovat z mezipaměti, takže odezva zůstává rychlá i při velkém provozu. Stavová stránka, jejíž obsah se mění často, má kratší dobu platnosti v mezipaměti, nebo se pokaždé sestaví znovu. Pravidla mezipaměti se nastavují u každé stránky zvlášť a respektují, jak často se obsah opravdu mění, takže veřejné stránky zůstávají rychlé, aniž by kdy ukázaly zastaralá data nad rámec nastaveného okna platnosti.

Přechod z anonymního na přihlášeného uživatele je funkce, která propojuje veřejné procesy s vnitřními. Odeslání veřejného formuláře může spustit automatizaci, která odesílateli vytvoří pozvánku, a promění tak anonymního zájemce v přihlášeného uživatele jedním krokem. Veřejný registrační formulář může novému členovi rovnou založit účet. Veřejný dotaz může vygenerovat odkaz „magic link“, díky němuž si tazatel zkontroluje svůj stav ve vnitřním portálu. Veřejná a přihlášená část nejsou oddělené světy; jsou to propojené plochy téže platformy a přesun návštěvníka z jedné do druhé je vestavěná schopnost, ne integrace na míru.

Pro prostředí, která provozují procesy směrem k zákazníkům, partnerské portály nebo jakoukoli interakci, jež nepatří za firemní firewall, jsou veřejné stránky často tím, co ušetří celý samostatný webový projekt. Tentýž Canvas pro tvorbu stránek, tentýž tvůrce formulářů, tentýž systém dotazů, tentýž datový model — jen s řízením přístupu nastaveným na „veřejné“ místo „přihlášené“. Ze souvisejících témat popisuje článek o tvorbě stránek v Canvasu autorské prostředí, článek o REST API programový přístup z partnerských integrací, článek o nahrávání souborů to, jak se zachází se soubory od návštěvníků, a článek o ochraně API se podrobně věnuje omezování počtu požadavků.