Mimari

Nasıl çalışır?

Korvi üç ayrı kanaldan sana zarar gelme yollarını izler: indirdiğin dosya, tıkladığın link, okuduğun e-posta. Ortak ilke: mümkün olduğunda hiç veri gönderme, gerekiyorsa en az veriyi gönder.

01

İndirilen dosya yakalanır

chrome.downloads.onCreated ile yeni indirme tespit edilir; kaynak URL ve dosya adı alınır. Diskteki byte'lara doğrudan erişilemez (Chrome güvenlik modeli); bu yüzden kaynak URL üzerinden çalışılır.

onCreated → { url, filename, mime }
02

Önce URL itibarı

Kaynak domain'in itibarı sunucudan sorulur. Bu ucuz bir kontroldür; büyük çoğunlukta karar burada verilir. POST /v1/check-url{ verdict }. Sonuç dangerous/suspicious ise kullanıcı uyarılır.

03

Sonra hash

Dosya makul boyuttaysa (≤ 50 MB) arka plan servisi kaynağı fetch() ile Blob olarak alır ve crypto.subtle.digest('SHA-256', …) ile hash hesaplar. Bu hash sunucudan sorgulanır — dosya değil, sadece 64-hex karakter.

sha256 = digest(blob) POST /check-file-hash { sha256 } → { known: true, verdict: "clean" } → sessiz geç
04

İçerik yalnızca bilinmiyorsa gider

Sunucu hash'i tanımıyorsa ve URL şüpheliyse, ancak o zaman içerik multipart olarak taranır. Bu, tüm kullanıcı toplamının çok küçük bir yüzdesidir. Bilinen-temiz dosyanın byte'ları asla ayrılmaz.

05

Link kontrolü (aynı mantık)

tabs.onUpdated ile aktif URL alınır. chrome.storage.session'daki cache kontrol edilir; yoksa sunucudan sorulur. TTL ile 6 saat cache. Şüpheli sonuçta sayfaya uyarı bandı enjekte edilir — "Geri dön" ya da "Yine de devam et" tek tık.

06

Gmail: sadece açık e-posta

Content script yalnızca mail.google.com'da çalışır. MutationObserver kullanıcının açtığı e-postayı yakalar — gelen kutusu değil. Görünür metin + linkler + gönderen çıkarılır, POST /check-email'a gider. Şüpheliyse mailin üstüne bant biner, şüpheli linkler işaretlenir.

mail.google.com → mailView.observe(mutation) if (opened) → { text, links, sender } → check
07

Kara liste (sessiz)

declarativeNetRequest ile bilinen zararlı ve izleyici domainler engellenir. Bu Chrome tarafında yerel olarak çalışır — her istekte sunucuya gitmez. Kural seti chrome.alarms ile periyodik güncellenir.

08

Fail-open

Sunucu erişilemezse eklenti çökmez; sessizce "kontrol edilemedi" durumuna düşer ve popup'ta bilgi verir. Gezmeye devam edersin — bekçin bir sonraki bağlantıda uyanır.

Yapmayacağı şeyler

Sadece koruma. Başka bir şey değil.

Chrome Web Store'un "tek amaç" politikası ve marka ilkemiz gereği Korvi'ye eklenmeyecek şeyler:

×

VPN / proxy

Trafik yeniden yönlendirilmez; coğrafi konum değiştirilmez. Bunlar farklı ürün kategorileridir.

×

localStorage

Hiçbir tarayıcı web depolama API'si kullanılmaz. Sadece chrome.storage.local/session.

×

Kalıcı arka plan

MV3 gereği sadece event-driven service worker. Kaynağı gereksiz tüketmez.

×

Geniş izin

<all_urls>, webRequestBlocking gibi geniş izinler istenmez. Sadece gereken host.

Sıra sende

Detay bu kadar. Deneme zamanı.

Chrome'da geliştirici modu ile birkaç saniyede yükleyip test edebilirsin. Chrome Web Store'da yayınlanana kadar geri bildirimin bizim için önemli.