Když nasazujete vylepšené UI pro zobrazování PDF, PPT nebo faktur, obvykle se soustředíte na estetiku, responzivitu a rychlost načítání. Co se však často přehlíží, je jak dokumenty cestují z vašeho serveru do prohlížeče uživatele. Jeden chybný krok může proměnit jinak solidní aplikaci v vektor úniku dat.
V tomto průvodci projdeme sedm bezpečnostně zaměřených schopností, které byste měli vložit—hned po vybalení—při integraci prohlížeče dokumentů zaměřeného na soukromí. Kontrolní seznam je určen front‑end inženýrům, kteří chtějí posílit své embedky, aniž by přidávali zbytečnou složitost.
1. End‑to‑End šifrování proudu dokumentu
Proč je to důležité
I když soubory podáváte přes HTTPS, surový dokument může zachytit kompromitované rozšíření prohlížeče nebo škodlivý skript, který přečte odpověď předtím, než dorazí do prohlížeče.
Jak implementovat
| Krok | Akce |
|---|---|
| Šifrování na serveru | Šifrujte soubor (AES‑256‑GCM je solidní volba) před uložením nebo streamováním. |
| Zabezpečení transportu | Dodávejte šifrovaný blob přes TLS 1.3. |
| Dešifrování na klientovi | Spusťte Web Worker, který přijme šifrovaný stream, dešifruje jej v paměti a předá čistý text přímo do canvasu prohlížeče. |
| Nikdy neexponujte klíč | Uchovávejte dešifrovací klíč v krátkodobém, serverem generovaném tokenu (viz Funkce #4). |
Do doby, než prohlížeč vykreslí dokument, nebyl nikdy vystaven v prostém textu na síti ani v hlavním vláknu.
2. Seznam povolených pro Content‑Security‑Policy (CSP)
Riziko
Uvolněná CSP umožní útočníkovi vložit škodlivé skripty nebo načíst podvodné zdroje, které by mohly číst data canvasu prohlížeče.
Klíčové body
- ‘unsafe‑inline’ a ‘unsafe‑eval’ jsou pro skripty zakázány.
- Pouze CDN prohlížeče (nebo vlastní bundle) má povoleno servírovat JavaScript.
- Rámy jsou omezeny na důvěryhodnou doménu prohlížeče.
Přísná CSP dramaticky snižuje útočnou plochu stránky, která embed obsahuje.
3. Izolace stejného původu pomocí sandboxu iframe
Proč sandbox?
I přes CSP může kompromitovaná stránka zkusit proniknout do DOMu prohlížeče. Izolovaný <iframe> vytváří bezpečnostní klec, kterou hostitelská stránka nemůže prolomit bez explicitního povolení.
Sandbox flagy, kterým se vyhnout
allow-top-navigation– zabraňuje prohlížeči převzít hlavní okno.allow-popups– blokuje neočekávané vyskakovací okna, která by mohla být použita pro phishing.
Pokud prohlížeč potřebuje komunikovat s rodičovskou stránkou (např. pro synchronizaci UI), použijte postMessage s explicitní kontrolou původu.
4. Řízení přístupu založené na tokenu
Problém s přímými URL
Veřejné, statické URL umožní komukoli s odkazem soubor stáhnout navždy.
Protože token je podepsán na serveru, jakákoliv manipulace požadavek zneplatní a prohlížeč odmítne načíst.
5. Vodoznakování a dynamické překryvy
Účel
Dynamický, klientsky generovaný vodoznak přidává vrstvu odpovědnosti, aniž by měnil originální soubor.
Tipy pro implementaci
- Vykreslete vodoznak na canvas overlay, který leží nad stránkami PDF.
- Použijte e‑mail ze sezení nebo náhodné UUID, aby každá instance prohlížeče byla jedinečná.
- Přepínání překryvu pomocí jednoduchého flagu udržuje výkon na minimu.
Pokud se unikne dokument, vložený identifikátor ukazuje přímo na zdroj.
6. Omezení stahování a tisku
Výchozí chování prohlížeče
Většina prohlížečů nabízí kontextové menu pravým tlačítkem, které může uložit canvas jako obrázek, čímž efektivně exportuje stránku.
Co může a co nemůže prohlížeč
SDK prohlížeče může skrýt exportní akce z panelu nástrojů a katalog funkcí Doconut uvádí tisk v prohlížeči a export PDF mezi schopnosti, které můžete rozhodnout, zda je chcete nabídnout. Zkontrolujte názvy možností v dokumentaci konkrétní verze, kterou instalujete, místo toho, abyste se řídili článkem – klíče konfigurace se mezi verzemi mění.
Důležitější je část, kterou žádné nastavení panelu nepokrývá. Skrytí tlačítka je volba workflow, ne kontrola přístupu. Server musí i nadále autorizovat každý požadavek na stránku, miniaturu, export, stažení i tisk, protože tyto endpointy lze volat přímo. A jakmile jsou pixely na obrazovce, existují screenshoty, kamery a nástroje přístupnosti; prohlížeč, který slibuje opak, vám prodává něco, co nedokáže dodat.
7. Auditní logování a událostní háčky
Hodnota viditelnosti
I ten nejpevněji ošetřený prohlížeč může být zneužit. Logování, kdo otevřel který dokument, kdy a jaké akce provedl, vytváří forenzní stopu.
S logy v reálném čase můžete odhalit anomální vzorce – např. jeden uživatel otevře během několika sekund desítky důvěrných PDF – a spustit upozornění nebo odvolání přístupu.
Závěr
Vložení prohlížeče dokumentů je bezpečnostní odpovědnost, nejen UI otázka. Šifrování proudu dokumentu, přísná Content‑Security‑Policy, izolovaný iframe sandbox, token‑based přístup, dynamické vodoznaky, omezení exportu jako UX, nikoli ochrana, a auditní logování jsou to, co odděluje embed, který můžete bránit, od toho, který ne.
Dvě z těchto sedmi jsou vaše bez ohledu na to, který prohlížeč zvolíte: autorizace a audit. Žádná komponenta nemůže za vás učinit toto rozhodnutí.
Jste připraveni postavit embed?
- Začněte u dokumentace dodavatele pro verzi, kterou instalujete. Pro Doconut je to doconut.com — balíčky, průvodce nastavením a ukázky. Kopírování konfiguračních klíčů z článků je to, co rozbije integraci při upgradu.
- Vložte sedmibodový kontrolní seznam do šablony pull‑requestu, aby bezpečnostní revize proběhla před sloučením, ne po incidentu.
- Nejprve otestujte negativní scénáře: identifikátor dokumentu jiného nájemce, vypršená relace, přímý požadavek na stránku nebo exportní endpoint. To jsou testy, které odhalí skutečné díry.
