Güvenli Bir Belge Görüntüleyici Yerleştirme: Ön Uç Geliştiricilerin Çoğunlukla Kaçırdığı 7 Temel Özellik
PDF, PPT veya faturaları görüntülemek için cilalı bir UI sunduğunuzda, genellikle estetik, duyarlılık ve yükleme süresine odaklanırsınız. Bununla birlikte gözden kaçan şey, belgelerin sunucunuzdan kullanıcının tarayıcısına nasıl ulaştığıdır. Tek bir yanlış adım, sağlam bir uygulamayı veri sızıntısı vektörüne dönüştürebilir.
Bu rehberde, gizlilik odaklı bir belge görüntüleyici entegre ederken kutudan çıkar çıkmaz yerleştirmeniz gereken yedi güvenlik odaklı özelliği adım adım inceleyeceğiz. Kontrol listesi, gömü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 Önemlidir
Dosyaları HTTPS üzerinden servis etseniz bile, ham belge, görüntüleyiciye ulaşmadan önce yanıtı okuyan bir tarayıcı uzantısı ya da kötü amaçlı bir script tarafından ele geçirilebilir.
Nasıl Uygulanır
| Adım | İşlem |
|---|---|
| Sunucu‑tarafı şifreleme | Dosyayı (AES‑256‑GCM sağlam bir tercihtir) depolamadan ya da akışa almadan önce şifreleyin. |
| İletim güvenliği | Şifreli bloğu TLS 1.3 üzerinden iletin. |
| İstemci‑tarafı şifre çözme | Şifreli akışı alan, bellekte şifre çözen ve düz metni doğrudan görüntüleyicinin tuvali (canvas) içine besleyen bir Web Worker başlatın. |
| Anahtarı Asla Açığa Çıkarma | Şifre çözme anahtarını, kısa ömürlü, sunucu‑tarafı üretilen bir token içinde tutun (özellik #4’e bakın). |
Görüntüleyici render edildiğinde, belge ağda veya ana iş parçacığında bir hiç şifresiz olarak ortaya çıkmamış olur.
2. Content‑Security‑Policy (CSP) Beyaz Listesi
Risk
Gevşek bir CSP, saldırganın kötü amaçlı scriptler enjekte etmesine veya görüntüleyicinin tuval (canvas) verilerini okuyabilecek sahte kaynakları yüklemesine izin verir.
Anahtar noktalar
- ‘unsafe‑inline’ ve ‘unsafe‑eval’ scriptler için yasaktır.
- Yalnızca görüntüleyicinin CDN'i (veya kendi barındırılan paketi) JavaScript sunabilir.
- Çerçeveler (frames) güvenilir görüntüleyici alanına (domain) kısıtlanır.
Sıkı bir CSP, gömünün barındırıldığı sayfanın saldırı yüzeyini büyük ölçüde azaltır.
3. iframe Sandbox ile Aynı Köken İzolasyonu
Sandbox Neden?
CSP bile olsa, tehlikeye düşmüş bir sayfa görüntüleyicinin DOM'una ulaşmaya çalışabilir. İzole bir <iframe> güvenlik kafesi oluşturur ve ana sayfa bunu açık bir izin olmadan 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 üst sayfa ile iletişim kurması gerekiyorsa (ör. UI senkronizasyonu için), açık bir origin kontrolü ile postMessage kullanın.
4. Token‑Tabanlı Erişim Kontrolü
Doğrudan URL'lerin Problemi
Genel, statik URL'ler bağlantıyı 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 & Dinamik Katmanlar
Amaç
Dinamik, istemci‑tarafı bir filigran, orijinal dosyayı değiştirmeden sorumluluk katmanı ekler.
Uygulama İpuçları
- Filigranı, PDF sayfalarının üzerine yerleştirilen bir canvas katmanı üzerine çizin.
- Oturumun e‑posta adresini veya rastgele bir UUID'yi kullanın; böylece her görüntüleyici örneği benzersiz olur.
- Performans yükünü düşük tutmak için katmanı basit bir bayrakla 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 & 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 | Etki |
|---|---|
disableDownload: true | “İndir” arayüzünü gizler ve Ctrl+S kısayollarını devre dışı bırakır. |
disablePrint: true | Ctrl+P tuşunun gömü 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ı atlatmasını engelleyin.
7. Denetim Günlüğü & Olay Kancaları
Görünürlük Değeri
En sağlam şekilde güçlendirilmiş görüntüleyici bile kötüye kullanılabilir. Kimlerin, ne zaman hangi belgeyi 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 edip uyarı veya erişim iptali tetikleyebilirsiniz.
Sonuç
Bir belge görüntüleyici yerleştirmek sadece bir UI meselesi değil; aynı zamanda bir güvenlik sorumluluğudur. Uçtan uca şifreleme, katı bir Content‑Security‑Policy, 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ömüyü 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?
- https://doconut.com adresinden ücretsiz SDK’yı indirin – eklenti yok, ekstra bağımlılık yok.
- Yedi maddelik kontrol listesini pull‑request şablonunuza kopyalayarak güvenliği bir alışkanlık haline getirin.
- İ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 kodlamanın tadını çıkarın!
