Yerel Veritabanları

Bu belge şu yöntem için geçerlidir: Update API (v4): threatListUpdates.fetch.

Veritabanı kurulumu

Update API'yi kullanan istemcilerin yerel bir veritabanı kurmaları ve çalışmak istedikleri Güvenli Tarama listelerini ilk kez indirmeleri gerekir. Başlamak için safebrowsing Go paketini derleyip dağıtabilirsiniz (veya kendi uygulamanızı modellemek için paketi kullanabilirsiniz). Daha fazla bilgi için https://github.com/google/safebrowsing/ adresine göz atın.

Veritabanı güncellemeleri

En son tehditlere karşı koruma sağlamak için müşterilerin yerel Güvenli Tarama listelerini threatListUpdates.fetch yöntemini kullanarak düzenli olarak güncellemeleri kesinlikle önerilir. threatListUpdates.fetch isteği, güncellenecek listeleri belirtir. Bellek veya bant genişliği sınırlamaları olan istemciler, isteği kullanarak güncelleme kısıtlamaları da belirleyebilir (bkz. Güncelleme Kısıtlamaları). threatListUpdates.fetch yanıtı, aşağıda açıklandığı gibi her liste için tam güncelleme veya kısmi güncelleme döndürür.

Tam güncellemeler

İstemci, threatListUpdates.fetch isteğindeki state alanını boş bıraktığında veya sunucu tam güncelleme gerektiğini belirlediğinde tam güncellemeler döndürülür. Tam güncellemeler için yalnızca eklemeler döndürülür. İstemcinin, güncellemeleri uygulamadan ve doğrulama kontrolünü gerçekleştirmeden önce yerel veritabanını temizlemesi beklenir.

Boş durum

İstemci bir liste için ilk isteği gönderdiğinde tam güncellemeler döndürülür. Bu durumda, istekteki state alanı boş bırakılır (sağlanacak bir değer olmadığından) ve yanıttaki newClientState alanı, yerel listenin ilk durumunu döndürür. İstemci sonraki isteklerde state alanını kasıtlı olarak boş bıraktığında da tam güncellemeler de döndürülür. Bu işlem tam güncellemeyi zorunlu kılar ve yanıtın newClientState alanında yeni bir durum döndürür.

Sunucu kararı

Bazı durumlarda Güvenli Tarama sunucusu, istemci tarafından yalnızca kısmi güncelleme istendiğinde tam güncelleme döndürür. Bu durum, istemci başlangıçta listenin küçük bir sürümünü indirdikten sonra listenin daha büyük bir sürümüne güncellendiğinde gerçekleşebilir. Sunucu, yalnızca listenin tamamını içeren tam bir güncelleme döndürür. Bu durum, istemci uzun süre veri indirmediyse ve kısmi bir güncelleme isterse de gerçekleşebilir. Yine, sunucu tüm listeyi içeren tam bir güncelleme döndürür.

Kısmi güncellemeler

İstemci, threatListUpdates.fetch isteğinde state alanı için bir değer sağladığında kısmi güncellemeler döndürülür (yukarıda belirtildiği gibi istisna, sunucunun tam güncellemenin gerekli olduğunu belirlemesidir). Kısmi güncellemeler için hem eklemeler hem de kaldırmalar döndürülür. İstemci, yerel veritabanındaki listeleri günceller (kaldırma işlemlerini eklemelerden önce uygular) ve ardından, doğrulama kontrolünü gerçekleştirir.

Eklemeler

Eklemeler, yerel veritabanına eklenmesi gereken SHA256 karma ön ekleridir. Karma ön eklerin büyük çoğunluğu 4 bayt uzunluğundadır ancak bazı karma ön eklerin uzunluğu 4 ila 32 bayt olabilir. Bu nedenle, birden fazla ekleme grubu döndürülebilir (örneğin, biri 4 baytlık önekler, diğeri 5 baytlık önekler içeren).

İstemci sıkıştırmayı destekliyorsa yanıt, Pirinç sıkıştırma kullanılarak sıkıştırılabilir. Bununla birlikte, yalnızca 4 baytlık karma önekler sıkıştırılır. Daha uzun karma ön ekleri her zaman sıkıştırılmamış, ham biçimde gönderilir (Sıkıştırma bölümüne bakın).

Kaldırma işlemleri

Kaldırma işlemleri, yerel veritabanından kaldırılması gereken girişlere işaret eden ve sözlüğe göre sıralanmış istemci veritabanındaki sıfır tabanlı dizinlerdir. Yalnızca bir kaldırma grubu iade edilir.

İstemci sıkıştırmayı destekliyorsa "pirinç karmaları" ve "pirinç dizinleri" döndürülür. Sıkıştırma desteklenmiyorsa "ham karmalar" ve "ham dizinler" döndürülür (Sıkıştırma bölümüne bakın).

Doğrulama kontrolleri

threatListUpdates.fetch yanıtı, tam güncelleme veya kısmi güncellemeyle döndürüldüğünde, istemcinin bir doğrulama kontrolü gerçekleştirmesi beklenir.

İstemci ilk olarak yerel veritabanındaki listeleri günceller (eklemelerden önce kaldırma işlemlerini uygular). Daha sonra istemci, (sözlüğe göre sıralanmış) yerel listenin SHA256 karmasını hesaplar ve yanıtta döndürülen sağlama toplamıyla karşılaştırır. İki değer eşitse Güvenli Tarama listesi "doğru" olarak kabul edilir.

İki değer eşit değilse Güvenli Tarama listesi "bozuk" olarak kabul edilir. İstemcinin listeyi veritabanından temizlemesi ve state alanı boş dizeye ayarlanmış olarak ikinci bir güncelleme yeniden yayınlaması gerekir. Bu, tam güncellemeyi zorlar ve yepyeni bir liste ve durum döndürür.