Belgeleri hiçbir yere yüklemeden tarayın
Pasaportlar, sözleşmeler, maaş bordroları, sağlık raporları. Taranmaya en çok değen belgeler, bir yabancının sunucusuna teslim edilmeye en az değenlerdir. ScanPDF, bu teslimat işin bir parçası olmasın diye tasarlandı.
Sıradan bir online dönüştürücü ne yapar
Alışıldık "fotoğraftan PDF'ye" sitesi, bir sunucunun önüne konmuş bir web formudur. Dosyanız yüklenir, göremediğiniz bir yerde dönüştürülür ve indirmeniz için size geri sunulur. Kullanım koşullarının bir yerinde de dosyanın bir saat ya da bir gün sonra silineceğine dair bir söz bulunur.
Bu söz pekâlâ tutuluyor olabilir. Ama bu bir sözdür, bir mekanizma değil; üstelik size hiç söylenmeyen kısımları kapsamaz: dosyanın kaç makineden geçtiğini, nelerin günlüğe kaydedildiğini, yedeği hangi alt işleyicinin sakladığını ya da gelecekteki bir veri ihlalinin neleri açığa çıkaracağını. Bir kimlik belgesi ya da imzalı bir sözleşme söz konusuysa dürüst risk değerlendirmesi şudur: yükleme tamamlandığı anda, olacaklar artık sizin kontrolünüzde değildir.
ScanPDF bunun yerine ne yapar
Yükleme adımı yoktur, çünkü yüklenecek bir yer yoktur. ScanPDF statik bir sayfadır. Tarayıcınız fotoğrafı diskten okur ve bundan sonraki her şey sekmenin içinde olup biter:
- Kenar algılama, OpenCV'nin WebAssembly derlemesi üzerinde, sizin işlemcinizde çalışır.
- Perspektif düzeltme ve filtreleme, bellekteki tam çözünürlüklü görüntüye uygulanır.
- PDF yerel olarak oluşturulur; bunun için pdf-lib kullanılır ve dosya tarayıcıya sıradan bir indirme olarak teslim edilir.
Hiçbir istek görüntü verinizi taşımaz, çünkü kodda böyle bir istek yoktur. Uygulama yüklendikten sonra ağ kablosunu çekseniz bile her şey çalışmaya devam eder. Başka bir uygulamadan Paylaş ve ardından ScanPDF ile gönderdiğiniz fotoğraflar da cihazın içinde teslim edilir: bu isteği uygulamanın service worker'ı kendisi yanıtlar ve hiçbir şey iletilmez. Bilinmesi gereken bir uç durum var: uygulama Android'de hâlâ yüklüyken site verilerini temizlerseniz, cihazda bir sonraki paylaşımı karşılayacak bir şey kalmaz ve tarayıcı bu fotoğrafları web sunucusuna gönderir; sunucu onları kabul etmez. Verileri temizledikten sonra uygulamayı bir kez açın, paylaşım yeniden cihazda kalır.
Yalnızca söylenmiyor, doğrulanabiliyor
Kontrol edemediğiniz bir gizlilik iddiasının pek değeri yoktur; bu yüzden buradaki iddia üç farklı yoldan kontrol edilebilecek şekilde kurgulandı.
- Kendiniz izleyin. Tarayıcınızın geliştirici araçlarını açın, Ağ (Network) sekmesine geçin ve bir belge tarayın. Uygulamanın kendi dosyaları yüklendikten sonra başka hiçbir şey gönderilmez.
- Kaynak kodunu okuyun. Uygulamanın tamamı MIT lisanslıdır ve GitHub üzerinde durur - kodu gizleyecek bir derleme adımı olmayan, birkaç yüz satırlık sade JavaScript modülleri ve URL ile SHA-256 üzerinden sabitlenmiş iki bağımlılık.
- Bırakın tarayıcı uygulasın. Kendi sunucunuzda çalıştırdığınız kapsayıcı, bağlantıları yalnızca kendi kaynağıyla (origin) sınırlayan katı bir
Content-Security-Policyile gelir. Bu politika altında, harici bir sunucuya yanlışlıkla yapılacak bir istek yalnızca kodda bulunmamakla kalmaz, tarayıcı tarafından da engellenir.
Barındırılan demo ile kendi sunucunuz arasındaki fark
Aradaki farkı net biçimde ortaya koymakta fayda var, çünkü çoğu site bunu yapmaz.
scanpdf.io adresindeki demo, GitHub Pages üzerinden sunulan aynı koddur. İşleme orada da tamamen istemci tarafında yapılır ve belgeleriniz yine cihazınızdan çıkmaz. Fark, yanıt başlıklarını kimin kontrol ettiğindedir: GitHub Pages üzerinde bu GitHub'dır; dolayısıyla projenin kendi nginx yapılandırmasındaki katı CSP uygulanmaz. GitHub ayrıca, her barındırma sağlayıcısının göreceği gibi, sayfanın kendisi için yapılan sıradan web sunucusu isteğini de görür.
Güvencenin, kodun söylediği şey olduğuna duyulan güvene dayanması yerine tarayıcı tarafından uygulanmasını istiyorsanız kendiniz çalıştırın. Kapsayıcı tek bir komutla başlar ve çalışırken ağ erişimine hiç ihtiyaç duymaz.
Hesap yok, telemetri yok, çerez yok
Kayıt olunacak bir şey olmadığı için elimizde bir e-posta adresi de yok. Analitik betiği, izleme pikseli, hata raporlama servisi ya da A/B testi altyapısı yok. Uygulama çerez oluşturmaz. Cihazınızda sakladıkları şunlarla sınırlıdır: tema ve sayfa boyutu gibi arayüz tercihleriniz, çevrimdışı açılabilmesi için uygulamanın kendi dosyalarının bir kopyası ve kısa bir süreliğine başka bir uygulamadan paylaşılan fotoğraflar; bunlar tarama aracı açılır açılmaz silinir. Sayfalarınız yalnızca bellekte durur; sayfayı yenilediğinizde oturumun bütün izleri silinir.
Bu, bir politikadan çok bir mimaridir. Arka ucu olmayan statik bir sayfanın, kötüye kullanabileceği veriyi koyacak bir yeri yoktur.
Deneyin
Tarama aracını açın ve başka hiçbir yere yüklemeyeceğiniz bir belgeyi bırakın. İşin özü de zaten bu. Kâğıt fotoğraflamaya yeniyseniz tarama rehberi ilk denemede temiz bir sonuç almayı anlatıyor.