Güvenli Bir Doküman Görüntüleyici Yerleştirme: Ön Uç Geliştiricilerin Sıkça Kaçırdığı 7 Temel Özellik
PDF, PPT veya faturaları görüntülemek için cilalı bir UI sunduğunuzda, genellikle estetik, yanıt verebilirlik ve yük‑leme süresine odaklanırsınız. Ancak gözden kaçan, belgelerin sunucunuzdan kullanıcının tarayıcısına nasıl ulaştığıdır. Tek bir adım hatası, sağlam bir uygulamayı veri sızıntısı vektörüne dönüştürebilir.
Bu rehberde, gizlilik‑odaklı bir doküman görüntüleyici entegre ederken kutudan çıkar çıkmaz yerleştirmeniz gereken yedi güvenlik‑odaklı yeteneği adım adım inceleyeceğiz. Kontrol listesi, gömülülerini gereksiz karmaşıklık eklemeden güçlendirmek isteyen ön uç mühendisleri için hazırlanmıştır.
1. Belge Akışının Uçtan Uca Şifrelenmesi
Neden Önemli
Dosyaları HTTPS üzerinden sunsanız bile, ham belge, tarayıcı uzantısı ele geçirilmiş ya da görüntüleyiciye ulaşmadan önce yanıtı okuyan kötü niyetli bir betik tarafından ele geçirilebilir.
Nasıl Uygulanır
| Adım | Eylem |
|---|---|
| Sunucu‑tarafı şifreleme | Dosyayı (AES‑256‑GCM sağlam bir seçimdir) depolamadan veya akışa vermeden önce şifreleyin. |
| Taşıma güvenliği | Şifreli bloğu TLS 1.3 üzerinden teslim edin. |
| İstemci‑tarafı şifre çözme | Şifreli akışı alan, bellekte şifre çözen ve düz metni doğrudan görüntüleyicinin tuvaline besleyen bir Web Worker başlatın. |
| Anahtarı asla ortaya çıkarmayın | Şifre çözme anahtarını kısa ömürlü, sunucu‑tarafı oluşturulan bir token içinde tutun (özellik #4'e bakın). |
Görüntüleyici render ettiğinde, belge ağda ya da ana iş parçacığında asla düz metin olarak ortaya çıkmamıştır.
2. İçerik‑Güvenlik‑Politikası (CSP) Beyaz Listeleme
Risk
Gevşek bir CSP, bir saldırganın kötü niyetli betikler enjekte etmesine veya görüntüleyicinin tuval verilerini okuyabilecek sahte kaynakları yüklemesine izin verir.
Anahtar noktalar
- ‘unsafe‑inline’ ve ‘unsafe‑eval’ betikler için yasaktır.
- Yalnızca görüntüleyicinin CDN'i (veya kendi barındırdığı paket) JavaScript sunabilir.
- Çerçeveler yalnızca güvenilir görüntüleyici alanına kısıtlanır.
Sıkı bir CSP, gömülü içeriği barındıran sayfanın saldırı yüzeyini büyük ölçüde azaltır.
3. iframe Sandbox ile Aynı‑Köken İzolasyonu
Neden sandbox?
CSP olsa bile, ele geçirilmiş bir sayfa görüntüleyicinin DOM'una erişmeye çalışabilir. İzole bir <iframe> güvenlik kafesi oluşturur ve ana sayfa açık izin olmadan bunu kıramaz.
Kaçınılması gereken sandbox bayrakları
allow-top-navigation– görüntüleyicinin üst‑seviye pencereyi ele geçirmesini önler.allow-popups– kimlik avı için kullanılabilecek beklenmedik pop‑up'ları engeller.
Görüntüleyicinin ebeveyn sayfa ile iletişim kurması gerekiyorsa (ör. UI senkronizasyonu için), açık bir origin kontrolüyle postMessage kullanın.
4. Token‑Tabanlı Erişim Kontrolü
Doğrudan URL'lerin Sorunu
Genel, statik URL'ler, linki elinde bulunduran herkesin dosyayı süresiz olarak indirmesine izin verir.
Token sunucu‑tarafı imzalandığı için, herhangi bir manipülasyon isteği geçersiz kılar ve görüntüleyici yüklemeyi reddeder.
5. Filigranlama ve Dinamik Katmanlar
Amaç
Dinamik, istemci‑tarafı bir filigran, orijinal dosyayı değiştirmeden sorumluluk katmanı ekler.
Uygulama İpuçları
- Filigranı PDF sayfalarının üzerinde duran bir canvas katmanı üzerine render edin.
- Oturumun e‑postasını veya rastgele bir UUID'yi kullanarak her görüntüleyici örneğinin benzersiz olmasını sağlayın.
- Performans yükünü minimumda tutmak için basit bir bayrakla katmanı açıp kapatın.
Eğer sızdırılan bir belge ortaya çıkarsa, gömülü tanımlayıcı doğrudan kaynağa işaret eder.
6. İndirme ve Yazdırma Kısıtlamaları
Tarayıcı Varsayılanları
Çoğu tarayıcı, tuvali bir görüntü olarak kaydedebilen sağ‑tık bağlam menüsü sunar; bu da belgeyi etkili bir şekilde dışa aktarır.
Savunma Bayrakları
| Görüntüleyici seçeneği | Etkisi |
|---|---|
disableDownload: true | Herhangi bir “İndir” arayüzünü gizler ve Ctrl+S kısayollarını devre dışı bırakır. |
disablePrint: true | Ctrl+P'nin gömülü içerik için yazdırma iletişim kutusunu açmasını engeller. |
preventContextMenu: true | Görüntüleyici alanı üzerindeki yerel bağlam menüsünü engeller. |
Bunları iframe sandbox ile birleştirerek, ana sayfanın JavaScript aracılığıyla bunları atlatamamasını sağlayın.
7. Denetim Günlüğü ve Olay Kancaları
Görünürlüğün Değeri
En sağlam görüntüleyici bile kötüye kullanılabilir. Kimin hangi belgeyi ne zaman açtığını ve hangi eylemleri gerçekleştirdiğini kaydetmek, adli bir iz oluşturur.
Gerçek zamanlı günlüklerle, bir kullanıcının saniyeler içinde onlarca gizli PDF açması gibi anormal kalıpları tespit edebilir ve uyarılar ya da iptaller tetikleyebilirsiniz.
Sonuç
Bir doküman görüntüleyici yerleştirmek sadece bir UI meselesi değil; aynı zamanda bir güvenlik sorumluluğudur. Uçtan uca şifreleme, sıkı bir İçerik‑Güvenlik‑Politikası, izole bir iframe sandbox, token‑tabanlı erişim, dinamik filigranlar, indirme/yazdırma kısıtlamaları ve kapsamlı denetim günlüğü ekleyerek, basit bir gömme öğesini sağlam, ihlale dayanıklı bir bileşene dönüştürürsünüz.
Bir sonraki uygulamanızı güvence altına almaya hazır mısınız?
- Ücretsiz SDK'yı indirin https://doconut.com adresinden – eklenti yok, ekstra bağımlılık yok.
- Yedi maddelik kontrol listesini güvenliği bir alışkanlık haline getirmek için çekme‑istek şablonunuza kopyalayın.
- İlk özelliği bugün uygulayın ve ilerlemenizi yorumlarda paylaşın—topluluk sorumluluğu herkesin güvende kalmasına yardımcı olur.
Güvende kalın, hızlı kalın ve mutlu kodlamalar!
