Database Lokal

Dokumen ini berlaku untuk metode berikut: Update API.

Penyiapan database

Klien yang menggunakan Update API harus menyiapkan database lokal dan melakukan download awal daftar Web Risk yang ingin digunakan. Lihat bagian Update lengkap di bawah untuk mengetahui informasi selengkapnya tentang cara melakukan pengambilan awal.

Pembaruan database

Untuk memastikan perlindungan terhadap ancaman terbaru, klien sangat dianjurkan untuk memperbarui daftar Web Risk lokal 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 Mengupdate Batasan).

threatLists.computeDiff response menampilkan update lengkap atau update sebagian untuk setiap daftar, seperti yang dijelaskan di bawah.

Update lengkap

Update lengkap ditampilkan saat klien membiarkan kolom versionToken dalam permintaan threatLists.computeDiff kosong atau saat server menentukan bahwa update lengkap diperlukan. Untuk update lengkap, hanya penambahan yang ditampilkan. Klien diharapkan untuk menghapus database lokal sebelum menerapkan update dan melakukan pemeriksaan validasi.

Status Tidak Ada

Update lengkap ditampilkan saat klien mengirim permintaan awal untuk sebuah daftar. Dalam hal ini, kolom versionToken di permintaan dibiarkan kosong (karena tidak ada nilai yang dapat diberikan) dan kolom newVersionToken dalam respons menampilkan status awal untuk daftar lokal. Update lengkap juga ditampilkan saat klien sengaja membiarkan kolom versionToken kosong 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 jika hanya update sebagian yang diminta oleh klien. Hal ini dapat terjadi jika klien awalnya mendownload versi kecil daftar, lalu melakukan update ke versi daftar yang lebih besar; server akan menampilkan update lengkap dengan seluruh daftar. Hal ini juga dapat terjadi jika klien sudah lama tidak mendownload data dan meminta update parsial; sekali lagi, server akan menampilkan update lengkap dengan seluruh daftar.

Update sebagian

Update parsial ditampilkan saat klien memberikan nilai untuk kolom versionToken dalam permintaan threatLists.computeDiff (pengecualian seperti yang disebutkan di atas, adalah saat server menentukan bahwa update penuh diperlukan). Untuk pembaruan parsial, penambahan dan penghapusan 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 panjangnya 4 byte, tetapi beberapa awalan hash dapat memiliki panjang antara 4 hingga 32 byte. Oleh karena itu, beberapa kumpulan tambahan dapat ditampilkan; misalnya, satu kumpulan berisi awalan 4 byte dan satu lagi 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 di database klien yang diurutkan secara leksikografis dan mengarah ke entri yang harus dihapus dari database lokal. Hanya satu set penghapusan yang akan ditampilkan.

Jika klien mendukung kompresi, "hash beras" dan "indeks beras" akan ditampilkan. Jika kompresi tidak didukung, "hash mentah" dan "indeks mentah" akan ditampilkan. Untuk mengetahui detail selengkapnya, lihat Kompresi/web-risk/docs/kompresi).

Pemeriksaan validasi

Saat respons threatLists.computeDiff ditampilkan; dengan update lengkap atau update sebagian; klien diharapkan melakukan pemeriksaan validasi.

Pertama-tama, klien akan memperbarui daftar di database lokal (menerapkan penghapusan sebelum penambahan). Klien kemudian 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 tidak sama, daftar Web Risk dianggap "rusak". Klien harus menghapus daftar dari database dan melakukan update kedua dengan kolom versionToken yang disetel ke string kosong; tindakan ini akan memaksa update penuh serta menampilkan daftar dan status baru.