Database Lokal
Dokumen ini berlaku untuk metode berikut: Update API.
Penyiapan database
Klien yang menggunakan Update API diwajibkan untuk menyiapkan database lokal dan melakukan download awal daftar Risiko Web yang ingin mereka gunakan. Lihat bagian Update lengkap di bawah untuk mengetahui informasi selengkapnya tentang cara melakukan pengambilan awal.
Update database
Untuk memastikan perlindungan terhadap ancaman terbaru, klien sangat
dianjurkan untuk memperbarui daftar Web Risk lokal mereka secara rutin menggunakan
metode
threatLists.computeDiff
.
Permintaan threatLists.computeDiff
menentukan daftar yang akan diperbarui. Jika klien memiliki batasan memori atau bandwidth, mereka juga dapat menggunakan permintaan untuk menetapkan batasan update (lihat Batasan Update).
threatLists.computeDiff response
menampilkan
update penuh atau update sebagian untuk setiap daftar, seperti yang dijelaskan di bawah.
Pembaruan lengkap
Update lengkap ditampilkan saat klien mengosongkan kolom versionToken
di
permintaan threatLists.computeDiff
atau saat server menentukan bahwa update lengkap diperlukan. Untuk pembaruan lengkap,
hanya penambahan yang
ditampilkan. Klien diharapkan untuk menghapus database lokal sebelum menerapkan
update dan melakukan
pemeriksaan validasi.
Status Tidak Ada
Pembaruan lengkap ditampilkan saat klien mengirim permintaan awal untuk daftar.
Dalam hal ini, kolom versionToken
dalam permintaan dibiarkan kosong (karena
tidak ada nilai yang akan diberikan) dan kolom newVersionToken
dalam respons
menampilkan status awal untuk daftar lokal. Update lengkap juga ditampilkan
saat klien sengaja mengosongkan kolom versionToken
pada permintaan
berikutnya. Tindakan ini akan memaksa pembaruan penuh dan menampilkan status baru di
kolom newVersionToken
respons.
Keputusan server
Terkadang, server Web Risk menampilkan update lengkap saat hanya update sebagian yang diminta oleh klien. Hal ini dapat terjadi saat klien awalnya mendownload versi kecil daftar, lalu mengupdate ke versi daftar yang lebih besar; server hanya akan menampilkan update lengkap dengan seluruh daftar. Hal ini juga dapat terjadi jika klien sudah lama tidak mendownload data dan meminta update sebagian; sekali lagi, server hanya akan menampilkan update lengkap dengan seluruh daftar.
Update sebagian
Pembaruan sebagian ditampilkan saat klien memberikan nilai untuk
kolom versionToken
dalam
permintaan threatLists.computeDiff
(pengecualian, seperti yang disebutkan di atas, adalah saat server menentukan bahwa pembaruan penuh
diperlukan). Untuk update parsial, penambahan dan
penghapusan akan
ditampilkan. Klien memperbarui daftar di database lokal (menerapkan
penghapusan sebelum penambahan), lalu melakukan
pemeriksaan validasi.
Penambahan
Penambahan adalah awalan hash SHA256 yang harus ditambahkan ke database lokal. Sebagian besar awalan hash memiliki panjang 4 byte, tetapi beberapa awalan hash dapat memiliki panjang antara 4 dan 32 byte. Oleh karena itu, beberapa kumpulan penambahan dapat ditampilkan; misalnya, satu yang berisi awalan 4 byte dan satu yang berisi awalan 5 byte.
Jika klien mendukung kompresi, respons dapat dikompresi menggunakan kompresi Rice. Namun, hanya awalan hash 4 byte yang dikompresi. Awalan hash yang lebih panjang selalu dikirim dalam format mentah yang tidak dikompresi. Untuk mengetahui detail selengkapnya, lihat Kompresi.
Penghapusan
Penghapusan adalah indeks berbasis nol dalam database klien yang diurutkan secara leksikografis yang mengarah ke entri yang harus dihapus dari database lokal. Hanya satu kumpulan penghapusan yang akan ditampilkan.
Jika klien mendukung kompresi, "rice hash" dan "rice index" akan ditampilkan. Jika kompresi tidak didukung, "hash mentah" dan "indeks mentah" akan ditampilkan. Untuk mengetahui detail selengkapnya, lihat Kompresi/web-risk/docs/compression).
Pemeriksaan validasi
Saat
respons threatLists.computeDiff
ditampilkan; dengan update penuh atau update sebagian; klien
diharapkan untuk melakukan pemeriksaan validasi.
Klien pertama-tama memperbarui daftar di database lokal (menerapkan penghapusan sebelum penambahan). Kemudian, klien akan menghitung hash SHA256 dari daftar lokal (yang diurutkan secara leksikografis) dan membandingkannya dengan checksum yang ditampilkan dalam respons. Jika kedua nilai tersebut sama, daftar Web Risk dianggap "benar".
Jika kedua nilai tersebut tidak sama, daftar Risiko Web dianggap
"rusak". Klien harus menghapus daftar dari database dan menerbitkan ulang update kedua
dengan kolom versionToken
yang ditetapkan ke string kosong; tindakan ini akan memaksa
update penuh dan menampilkan daftar dan status baru.