Vložení zabezpečeného prohlížeče dokumentů: 7 základních funkcí, které vývojáři front‑endu často přehlížejí
Když nasazujete vyladěné UI pro zobrazování PDF, PPT nebo faktur, obvykle se soustředíte na estetiku, responzivitu a dobu načítání. To, co se však přehlíží, je jak se dokumenty dostanou z vašeho serveru do prohlížeče uživatele. Jedna špatná chyba může převést solidní aplikaci na vektor úniku dat.
V tomto průvodci projdeme sedm bezpečnostně orientovaných schopností, které byste měli vložit – hned z krabice – při integraci prohlížeče dokumentů zaměřeného na soukromí. Checklist je určen vývojářům front‑endu, kteří chtějí posílit své embedování bez zbytečné složitosti.
1. End‑to‑End šifrování proudu dokumentu
Proč je to důležité
I když soubory servírujete 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ž se dostane do prohlížeče.
Jak implementovat
| Krok | Akce |
|---|---|
| Server‑side šifrování | Zašifrujte soubor (AES‑256‑GCM je solidní volba) před jeho uložením nebo streamováním. |
| Transportní zabezpečení | Dodávejte zašifrovaný blob přes TLS 1.3. |
| Client‑side dešifrování | Spusťte Web Worker, který přijme zaš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 tokenu generovaném serverem (viz Funkce #4). |
Do doby, než prohlížeč vykreslí, dokument nikdy nebyl vystaven v otevřeném textu na síti ani na hlavním vlákně.
2. Content‑Security‑Policy (CSP) whitelistování
Riziko
Uvolněná CSP umožní útočníkovi injektovat škodlivé skripty nebo načíst nelegitimní zdroje, které by mohly přečí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 samohostovaný balík) smí sloužit JavaScript.
- Rámce jsou omezeny na důvěryhodnou doménu prohlížeče.
Přísná CSP dramaticky snižuje útočný povrch stránky, která embed obsahuje.
3. Same‑Origin izolace pomocí sandboxu iframe
Proč sandbox?
I při 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é je třeba vyhnout
allow-top-navigation– zabraňuje prohlížeči převzít ovládání hlavního okna.allow-popups– blokuje nečekané vyskakovací okno, které by mohlo být použito 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. Token‑based řízení přístupu
Problém s přímými URL
Veřejné, statické URL umožňují komukoli s odkazem stáhnout soubor navždy.
Protože token je podepsán na straně serveru, jakékoli pozměnění neplatí požadavek a prohlížeč odmítne načíst.
5. Vodoznak a dynamické překrytí
Účel
Dynamický, klientský vodoznak přidává vrstvu odpovědnosti, aniž by měnil původní soubor.
Tipy pro implementaci
- Vykreslete vodoznak na canvas overlay, který leží nad stránkami PDF.
- Použijte email relace nebo náhodné UUID, aby každá instance prohlížeče byla unikátní.
- Přepínání překrytí pomocí jednoduché příznaku udrží výkon na minimu.
Pokud se unikne dokument, vložený identifikátor odkazuje 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 po kliknutí pravým tlačítkem, které může uložit canvas jako obrázek a tím prakticky exportovat dokument.
Defenzivní flagy
| Možnost prohlížeče | Efekt |
|---|---|
disableDownload: true | Skryje veškeré UI „Stáhnout“ a zakáže zkratku Ctrl+S. |
disablePrint: true | Zabrání Ctrl+P v otevření dialogu tisku pro embed. |
preventContextMenu: true | Blokuje nativní kontextové menu nad oblastí prohlížeče. |
Kombinujte to s iframe sandboxem, aby hostitelská stránka nemohla obejít omezení pomocí JavaScriptu.
7. Auditní logování a událostní háčky
Hodnota přehledu
I ten nejpevněji zabezpeč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 real‑time logy můžete odhalit anomální vzory — například uživatele, který během několika sekund otevře desítky důvěrných PDF — a spustit upozornění nebo zrušení přístupu.
Závěr
Vložení prohlížeče dokumentů není jen otázka UI; je to bezpečnostní odpovědnost. Začleněním end‑to‑end šifrování, přísné Content‑Security‑Policy, izolovaného iframe sandboxu, token‑based řízení přístupu, dynamických vodoznaků, omezení stahování/tisku a komplexního auditního logování proměníte jednoduchý embed na robustní, odolný komponent proti úniku.
Připravení zabezpečit další aplikaci?
- Stáhněte si zdarma SDK z https://doconut.com – žádné pluginy, žádné další závislosti.
- Zkopírujte sedmibodový checklist do šablony vašeho pull‑requestu, aby se bezpečnost stala zvykem.
- Implementujte první funkci ještě dnes a podělte se o svůj pokrok v komentářích — společná odpovědnost pomáhá všem zůstat v bezpečí.
Zůstaňte v bezpečí, buďte rychlí a šťastné kódování!
