Kiedy wdrażasz dopracowany interfejs użytkownika do wyświetlania plików PDF, PPT lub faktur, zazwyczaj koncentrujesz się na estetyce, responsywności i czasie ładowania. Jednak pomijane jest to, jak dokumenty podróżują z Twojego serwera do przeglądarki użytkownika. Jeden błąd może zamienić solidną aplikację w wektor wycieku danych.
W tym przewodniku przeprowadzimy Cię przez siedem funkcji skoncentrowanych na bezpieczeństwie, które powinieneś osadzić — od razu po wyjęciu z pudełka — przy integracji przeglądarki dokumentów z priorytetem prywatności. Lista kontrolna jest napisana dla inżynierów front‑end, którzy chcą wzmocnić swoje osadzenia bez dodawania niepotrzebnej złożoności.
1. Szyfrowanie end‑to‑end strumienia dokumentu
Dlaczego to ważne
Nawet jeśli serwujesz pliki przez HTTPS, surowy dokument może zostać przechwycony przez zainfekowane rozszerzenie przeglądarki lub złośliwy skrypt, który odczytuje odpowiedź zanim trafi ona do przeglądarki.
Jak wdrożyć
| Krok | Działanie |
|---|---|
| Szyfrowanie po stronie serwera | Zaszyfruj plik (AES‑256‑GCM to solidny wybór) przed jego przechowywaniem lub strumieniowaniem. |
| Bezpieczeństwo transportu | Dostarcz zaszyfrowany blob przy użyciu TLS 1.3. |
| Deszyfrowanie po stronie klienta | Uruchom Web Worker, który odbiera zaszyfrowany strumień, deszyfruje go w pamięci i przekazuje tekst jawny bezpośrednio do płótna przeglądarki. |
| Nigdy nie ujawniaj klucza | Przechowuj klucz deszyfrujący w krótkotrwałym tokenie generowanym przez serwer (zobacz funkcję nr 4). |
Do momentu renderowania w przeglądarce dokument nigdy nie został ujawniony w postaci tekstu jawnego w sieci ani w głównym wątku.
2. Polityka bezpieczeństwa treści (CSP) – biała lista
Ryzyko
Luzacka polityka CSP pozwala atakującemu wstrzykiwać złośliwe skrypty lub ładować nieautoryzowane zasoby, które mogą odczytać dane z płótna przeglądarki.
Kluczowe punkty
- ‘unsafe‑inline’ i ‘unsafe‑eval’ są zabronione dla skryptów.
- Tylko CDN przeglądarki (lub własny pakiet) może dostarczać JavaScript.
- Ramki są ograniczone do zaufanej domeny przeglądarki.
Ścisła polityka CSP znacząco zmniejsza powierzchnię ataku strony, na której osadzono przeglądarkę.
3. Izolacja same‑origin za pomocą piaskownicy iframe
Dlaczego piaskownica?
Nawet przy CSP, zainfekowana strona może próbować sięgnąć do DOM‑u przeglądarki. Izolowany <iframe> tworzy klatkę bezpieczeństwa, której strona macierzysta nie może złamać bez wyraźnej zgody.
Flagi piaskownicy, których należy unikać
allow-top-navigation– zapobiega przejęciu przez przeglądarkę okna najwyższego poziomu.allow-popups– blokuje nieoczekiwane wyskakujące okna, które mogłyby być użyte do phishingu.
Jeśli przeglądarka musi komunikować się ze stroną nadrzędną (np. w celu synchronizacji UI), użyj postMessage z wyraźnym sprawdzeniem pochodzenia.
4. Kontrola dostępu oparta na tokenach
Problem z bezpośrednimi adresami URL
Publiczne, statyczne adresy URL pozwalają każdemu posiadającemu link na nieograniczone pobieranie pliku.
Ponieważ token jest podpisany po stronie serwera, każde manipulowanie nim unieważnia żądanie, a przeglądarka odmawia załadowania.
5. Znakowanie wodne i dynamiczne nakładki
Cel
Dynamiczny znak wodny po stronie klienta dodaje warstwę odpowiedzialności bez modyfikacji oryginalnego pliku.
Wskazówki dotyczące implementacji
- Renderuj znak wodny na nakładce canvas, która znajduje się nad stronami PDF.
- Użyj e‑maila sesji lub losowego UUID, aby każda instancja przeglądarki była unikalna.
- Włączaj/wyłączaj nakładkę prostym flagiem, aby utrzymać minimalny narzut wydajnościowy.
Jeśli wycieknięty dokument pojawi się, wbudowany identyfikator wskaże bezpośrednio na źródło.
6. Ograniczenia pobierania i drukowania
Domyślne zachowanie przeglądarki
Większość przeglądarek udostępnia menu kontekstowe po kliknięciu prawym przyciskiem, które może zapisać płótno jako obraz, skutecznie eksportując stronę.
Co przeglądarka może, a czego nie może zrobić
SDK przeglądarki dokumentów może ukrywać akcje eksportu w pasku narzędzi, a katalog funkcji Doconut wymienia drukowanie w przeglądarce i eksport PDF jako możliwości, które możesz zdecydować się udostępnić. Sprawdź nazwy opcji w dokumentacji wersji, którą instalujesz, a nie w jakimkolwiek artykule, w tym tym: klucze konfiguracyjne zmieniają się między wersjami.
Bardziej istotna jest część, której żadne ustawienie paska narzędzi nie obejmuje. Ukrycie przycisku to wybór workflow, a nie kontrola dostępu. Serwer musi nadal autoryzować każde żądanie strony, miniatury, eksportu, pobrania i drukowania samodzielnie, ponieważ te endpointy mogą być wywoływane bezpośrednio. A gdy piksele znajdują się na ekranie, istnieją zrzuty ekranu, kamery i narzędzia dostępności; przeglądarka obiecująca coś innego sprzedaje Ci coś, czego nie może dostarczyć.
7. Logowanie audytu i haki zdarzeń
Wartość przejrzystości
Nawet najbezpieczniej zabezpieczona przeglądarka może być nadużywana. Logowanie, kto otworzył który dokument, kiedy i jakie akcje wykonał, tworzy ślad forensyczny.
Dzięki logom w czasie rzeczywistym możesz wykrywać anomalne wzorce — np. pojedynczy użytkownik otwierający dziesiątki poufnych PDF‑ów w ciągu kilku sekund — i wyzwalać alerty lub odwołania.
Wnioski
Osadzanie przeglądarki dokumentów to odpowiedzialność bezpieczeństwa, nie tylko interfejsu użytkownika. Szyfrowanie strumienia dokumentu, ścisła Polityka bezpieczeństwa treści (CSP), izolowana piaskownica iframe, kontrola dostępu oparta na tokenach, dynamiczne znaki wodne, ograniczenia eksportu traktowane jako UX, a nie jako ochrona oraz logowanie audytu to elementy, które odróżniają osadzenie, które możesz bronić, od tego, którego nie możesz.
Dwie z tych siedmiu funkcji są Twoje, niezależnie od wybranej przeglądarki: autoryzacja i audyt. Żaden komponent nie może podjąć tej decyzji za Twoją najemcę.
Gotowy, aby zbudować osadzenie?
- Rozpocznij od dokumentacji dostawcy dla wersji, którą instalujesz. Dla Doconut jest to doconut.com — pakiety, przewodniki instalacyjne i przykłady. Kopiowanie kluczy konfiguracyjnych z artykułów powoduje, że integracje psują się po aktualizacji.
- Umieść siedmiopunktową listę kontrolną w szablonie pull‑requesta, aby przegląd bezpieczeństwa odbywał się przed scalceniem, a nie po incydencie.
- Najpierw przetestuj przypadki negatywne: identyfikator dokumentu innego najemcy, wygasła sesja, bezpośrednie żądanie do strony lub endpointu eksportu. To są testy, które wykrywają prawdziwe luki.
