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.
Mimari
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.
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.
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.
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.
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.
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.
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.
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.
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
Chrome Web Store'un "tek amaç" politikası ve marka ilkemiz gereği Korvi'ye eklenmeyecek şeyler:
Trafik yeniden yönlendirilmez; coğrafi konum değiştirilmez. Bunlar farklı ürün kategorileridir.
Hiçbir tarayıcı web depolama API'si kullanılmaz. Sadece chrome.storage.local/session.
MV3 gereği sadece event-driven service worker. Kaynağı gereksiz tüketmez.
<all_urls>, webRequestBlocking gibi geniş izinler istenmez. Sadece gereken host.
Sıra sende
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.