Salah satu peningkatan signifikan Google Safe Browsing v5 dibandingkan v4 (khususnya, Update API v4) adalah keaktualan dan cakupan data. Karena perlindungan sangat bergantung pada database lokal yang dikelola klien, penundaan dan ukuran update database lokal adalah kontributor utama perlindungan yang terlewat. Di v4, klien biasanya memerlukan waktu 20 hingga 50 menit untuk mendapatkan versi daftar ancaman terbaru. Sayangnya, serangan phishing menyebar dengan cepat: pada tahun 2021, 60% situs yang melakukan serangan aktif selama kurang dari 10 menit. Analisis kami menunjukkan bahwa sekitar 25-30% perlindungan phishing yang tidak ada disebabkan oleh keusangan data tersebut. Selain itu, beberapa perangkat tidak dilengkapi untuk mengelola keseluruhan daftar ancaman Google Safe Browsing, yang terus bertambah seiring waktu.
Jika saat ini Anda menggunakan Update API v4, ada jalur migrasi yang lancar dari v4 ke v5 tanpa harus mereset atau menghapus database lokal. Bagian ini mendokumentasikan cara melakukannya.
Mengonversi Pembaruan Daftar
Tidak seperti V4, yang mengidentifikasi daftar berdasarkan tuple jenis ancaman, jenis platform, jenis entri ancaman, di v5, daftar hanya diidentifikasi berdasarkan nama. Hal ini memberikan fleksibilitas saat beberapa daftar v5 dapat memiliki jenis ancaman yang sama. Jenis platform dan jenis entri ancaman dihapus di v5.
Di v4, pengguna akan menggunakan metode threatListUpdates.fetch untuk mendownload daftar. Di v5, pengguna akan beralih ke metode hashLists.batchGet.
Perubahan berikut harus dilakukan pada permintaan:
- Hapus objek
ClientInfo
v4 sepenuhnya. Daripada memberikan identifikasi klien menggunakan kolom khusus, cukup gunakan header User-Agent yang terkenal. Meskipun tidak ada format yang ditetapkan untuk memberikan identifikasi klien di header ini, sebaiknya sertakan client ID asli dan versi klien yang dipisahkan oleh karakter spasi atau karakter garis miring. - Untuk setiap objek
ListUpdateRequest
v4: * Cari nama daftar v5 yang sesuai di tabel di atas dan berikan nama tersebut dalam permintaan v5.- Hapus kolom yang tidak diperlukan seperti
threat_entry_type
atauplatform_type
. - Kolom
state
di v4 kompatibel langsung dengan kolomversions
v5. String byte yang sama yang akan dikirim ke server menggunakan kolomstate
di v4 dapat dengan mudah dikirim di v5 menggunakan kolomversions
. - Untuk batasan v4, v5 menggunakan versi sederhana yang disebut
SizeConstraints
. Kolom tambahan sepertiregion
harus dihapus.
- Hapus kolom yang tidak diperlukan seperti
Perubahan berikut harus dilakukan pada respons:
- Enum
ResponseType
v4 hanya diganti dengan kolom boolean bernamapartial_update
. - Kolom
minimum_wait_duration
kini dapat berupa nol atau dihilangkan. Jika demikian, klien diminta untuk segera membuat permintaan lain. Hal ini hanya terjadi jika klien menentukan batasan yang lebih kecil pada ukuran update maksimum diSizeConstraints
daripada ukuran database maksimum. - Algoritme decoding Rice untuk bilangan bulat 32-bit harus disesuaikan. Perbedaannya adalah data yang dienkode dienkode dengan endian yang berbeda. Di v4 dan v5, awalan hash 32-bit diurutkan secara leksikografis. Namun, di v4, awalan tersebut diperlakukan sebagai little endian saat diurutkan, sedangkan di v5, awalan tersebut diperlakukan sebagai big endian saat diurutkan. Artinya, klien tidak perlu melakukan pengurutan apa pun, karena pengurutan leksikografis identik dengan pengurutan numerik dengan big endian. Contoh semacam ini dalam implementasi Chromium v4 dapat ditemukan di sini. Pengurutan tersebut dapat dihapus.
- Algoritme decoding Rice juga harus diterapkan untuk panjang hash lainnya.
Mengonversi Penelusuran Hash
Di v4, pengguna akan menggunakan metode fullHashes.find untuk mendapatkan hash lengkap. Metode yang setara di v5 adalah metode hashes.search.
Perubahan berikut harus dilakukan pada permintaan:
- Strukturkan kode agar hanya mengirim awalan hash yang panjangnya tepat 4 byte.
- Hapus objek
ClientInfo
v4 sepenuhnya. Daripada memberikan identifikasi klien menggunakan kolom khusus, cukup gunakan header User-Agent yang terkenal. Meskipun tidak ada format yang ditetapkan untuk memberikan identifikasi klien di header ini, sebaiknya sertakan client ID asli dan versi klien yang dipisahkan oleh karakter spasi atau karakter garis miring. - Hapus kolom
client_states
. Fungsi tersebut tidak diperlukan lagi. - Anda tidak perlu lagi menyertakan
threat_types
dan kolom serupa.
Perubahan berikut harus dilakukan pada respons:
- Kolom
minimum_wait_duration
telah dihapus. Klien selalu dapat mengeluarkan permintaan baru sesuai kebutuhan. - Objek
ThreatMatch
v4 telah disederhanakan menjadi objekFullHash
. - Penyimpanan dalam cache telah disederhanakan menjadi satu durasi cache. Lihat prosedur di atas untuk berinteraksi dengan cache.