vitrinka.docs
Bezpečnost

Hlavičky a CSP

Sada hlaviček na každé odpovědi, jediný vlastník content security policy a origin, na kterém žijí sdílecí odkazy.

Každá odpověď

Nejvnějšnější obal handlerů — pokrývá aplikaci, hostitele sdílení i zkratky licenční brány — nastavuje X-Content-Type-Options: nosniff, referrer policy, permissions policy, frame-ancestors z content security policy, X-Robots-Tag: noindex a Strict-Transport-Security, kdykoli je BASE_URL https. Na instalaci přes prostý http za vlastním TLS terminátorem nastavte HSTS na proxy.

Hlavička X-Frame-Options záměrně chybí: neumí vyjádřit allowlist a hádala by se s direktivou CSP, která to umí.

Jeden vlastník CSP

Aplikace vydává každou hlavičku content security policy; reverzní proxy před ní nesmí přidat žádnou. Prohlížeče více politik protínají — každá musí načtení nezávisle povolit — takže druhá politika na okraji tiše zruší záměrné povolení.

Tři vrstvy, každá hlavičku nastavuje, ne přidává, takže odpověď nese přesně jednu vynucenou politiku:

  1. základ na každé odpovědi;
  2. allowlist pro vkládání workspace na odpovědích /w/ — VITRINKA_FRAME_ANCESTORS, originy oddělené mezerou, které smějí rámovat stránky workspace, prázdné znamená 'self';
  3. sandboxy artefaktů a souborů sad, které servírují HTML od uživatelů v neprůhledném originu pod vlastní úplnou politikou.

VITRINKA_CSP je ve výchozím stavu report-only: vynucený povrch zůstává frame-ancestors, zatímco celý základ se doručuje jako politika jen pro hlášení a porušení se posílají na /csp-report na každém originu, který ji vydává, jako strukturovaná, očištěná telemetrie. enforce povýší základ na vynucenou hlavičku — přepněte ho, až bude proud hlášení na vaší instalaci po reprezentativní dobu tichý.

Přístup z jiných originů

API je same-origin. Zástupné Access-Control-Allow-Origin: * se odpovídá jen u statických souborů, u surových souborů uvnitř sandboxu artefaktů a u anonymních endpointů pro propojení zařízení a kontaktního formuláře, a odpověď ověřenou session cookie prohlížeč pod zástupným originem jinému originu nikdy nezpřístupní. Dvě veřejně vkládaná pověření dostávají odpověď i z jiného originu, pokaždé jen pro origin, který povolují, a jen na vlastních cestách pro příjem dat: klíče hlášení chyb a tokeny rekordérů — klíč vydaný adminem odpovídá svému seznamu originů, propojený rekordér svému rozšíření prohlížeče nebo stránce, která odpovídá některému pravidlu domén projektů workspace, produkčnímu pravidlu však jen tehdy, když povoluje rekordér v aplikaci. VITRINKA_REFERENCE_ORIGINS jmenuje přesné https originy, které smějí s browserovou session přistupovat k soukromým kolekcím referencí, a to jen na /api/v1/reference-library; session cookie nikdy nerozšíří ani neotevře další API workspace.

Origin pro sdílení

VITRINKA_SHARE_ORIGIN pojmenovává vyhrazeného hostitele pro sdílecí odkazy nástěnek. Požadavky na tom hostiteli obsluhuje povrch jen pro sdílení, který nikdy nepřijme session cookie, bearer token ani řídicí rovinu, takže sdílená nástěnka se nemůže stát opěrným bodem do workspace. Prázdné nechá sdílecí odkazy na BASE_URL.

Dokumenty v sandboxu

HTML artefakty a soubory sad od uživatelů se servírují v sandboxovaném kontextu prohlížení s neprůhledným originem pod vlastní restriktivní politikou. Nemůžou číst cookies ani úložiště workspace a základ aplikace je pro ně vyňatý, aby sandboxovaný dokument nezaplavil proud hlášení porušeními, která má produkovat.

Na této stránce