Menyimpan data ke dalam cache
Dokumen ini berlaku untuk metode berikut:
Tentang penyimpanan cache
Untuk mengurangi penggunaan bandwidth klien dan melindungi Google dari lonjakan traffic, klien Lookup API dan Update API harus membuat dan mempertahankan cache lokal data ancaman. Lookup API menggunakan cache untuk mengurangi jumlah permintaan uris.search
yang dikirim klien ke Google.
Untuk Update API, cache digunakan untuk mengurangi jumlah permintaan hashes.search
yang dikirim klien ke Google. Protokol caching untuk setiap API diuraikan di bawah ini.
Lookup API
Klien Lookup API harus menyimpan setiap item ThreatUrl
yang ditampilkan ke dalam cache hingga
waktu yang ditentukan di kolom expireTime
. Klien kemudian perlu memeriksa
cache sebelum membuat permintaan uris.search
berikutnya ke server. Jika
entri cache untuk ThreatUrl
yang ditampilkan sebelumnya belum habis masa berlakunya,
klien akan menganggap item tersebut masih tidak aman. Menyimpan item ThreatUrl
ke dalam cache dapat mengurangi jumlah permintaan API yang dibuat oleh klien.
Update API
Untuk mengurangi jumlah keseluruhan permintaan hashes.search
yang dikirim ke Google menggunakan
Update API, klien harus mengelola cache lokal. API menetapkan
dua jenis caching, positif dan negatif.
Cache positif
Untuk mencegah klien berulang kali menanyakan status hash penuh
tidak aman tertentu, setiap ThreatHash
yang ditampilkan berisi waktu cache
positif (ditentukan oleh kolom expireTime
). Hingga saat ini, hash lengkap dapat dianggap
tidak aman.
Cache negatif
Untuk mencegah klien berulang kali menanyakan status hash penuh
aman tertentu, respons menentukan durasi cache negatif
untuk awalan yang diminta (ditentukan oleh kolom negativeExpireTime
). Hingga saat ini, semua hash penuh dengan awalan yang diminta akan dianggap aman untuk jenis ancaman yang diminta, kecuali yang ditampilkan oleh server sebagai tidak aman.
Cache ini sangat penting karena mencegah kelebihan traffic yang
dapat disebabkan oleh benturan awalan hash dengan URL aman yang menerima banyak
traffic.
Memeriksa cache
Saat ingin memeriksa status URL, klien akan menghitung hash lengkapnya terlebih dahulu. Jika awalan hash lengkap ada di database lokal, klien
akan melihat cache-nya sebelum membuat permintaan hashes.search
ke
server.
Pertama, klien harus memeriksa ditemukannya cache yang positif. Jika ada
entri cache positif yang belum habis masa berlakunya untuk hash lengkap minat, hal tersebut harus
dianggap tidak aman. Jika entri cache positif sudah tidak berlaku, klien harus mengirim permintaan hashes.search
untuk awalan lokal yang terkait. Sesuai dengan protokol, jika server menampilkan hash lengkap, server akan dianggap tidak aman; jika tidak, server akan dianggap aman.
Jika tidak ada entri cache positif untuk hash penuh, klien harus memeriksa hit cache negatif. Jika ada entri cache negatif yang belum habis masa berlakunya untuk awalan lokal terkait, hash lengkap dianggap aman. Jika entri cache negatif sudah tidak berlaku lagi, atau entri tersebut tidak ada, klien harus mengirim permintaan hashes.search
untuk awalan lokal terkait dan menafsirkan respons seperti biasa.
Memperbarui cache
Cache klien harus diperbarui setiap kali respons hashes.search
diterima.
Entri cache positif harus dibuat atau diperbarui untuk hash penuh per kolom expireTime
. Durasi cache negatif awalan hash juga harus dibuat atau diperbarui sesuai kolom negativeExpireTime
respons.
Jika permintaan hashes.search
berikutnya tidak menampilkan hash penuh yang saat ini
di-cache secara positif, klien tidak perlu menghapus entri cache
positif. Dalam praktiknya, hal ini tidak perlu dikhawatirkan karena durasi cache
positif biasanya singkat (beberapa menit) untuk memungkinkan koreksi
positif palsu dengan cepat.
Contoh skenario
Pada contoh berikut, asumsikan h(url) adalah awalan hash URL, dan H(url) adalah hash lengkap untuk URL. Yaitu, h(url) = SHA256(url).substr(4), H(url) = SHA256(url).
Asumsikan klien dengan cache kosong mengunjungi example.com/ dan melihat bahwa h(example.com/) ada di database lokal. Klien meminta hash lengkap untuk awalan hash h(example.com/) dan menerima kembali hash panjang penuh H(example.com/) bersama dengan waktu habis masa berlaku cache positif 5 menit dari sekarang dan waktu habis masa berlaku cache negatif 1 jam dari sekarang.
Durasi cache positif selama 5 menit memberi tahu klien berapa lama
hash panjang penuh H(example.com/) harus dianggap tidak aman tanpa mengirim
permintaan hashes.search
lain. Setelah 5 menit, klien harus mengeluarkan
permintaan hashes.search
lagi untuk awalan tersebut h(example.com/) jika klien mengunjungi
example.com/ lagi. Klien harus mereset waktu habis masa berlaku cache negatif awalan hash per respons baru.
Durasi cache negatif 1 jam memberi tahu klien berapa lama semua hash lengkap lainnya selain H(example.com/) yang memiliki awalan h(example.com/) yang sama harus dianggap aman. Selama 1 jam, setiap URL
sehingga h(URL) = h(example.com/) harus dianggap aman, dan oleh karena itu tidak
menghasilkan permintaan hashes.search
(dengan asumsi bahwa H(URL) != H(example.com/)).
Jika respons fullHashes
berisi nol kecocokan dan waktu habis masa berlaku cache negatif ditetapkan, klien tidak boleh mengeluarkan permintaan hashes.search
untuk setiap awalan yang diminta selama waktu cache negatif tertentu.
Jika respons hashes.search
berisi satu atau beberapa kecocokan, waktu habis masa berlaku cache negatif masih ditetapkan untuk seluruh respons. Dalam hal ini, waktu habis masa berlaku cache
untuk satu hash penuh menunjukkan berapa lama klien harus menganggap
hash panjang lengkap tertentu tidak aman. Setelah durasi cache ThreatHash
berlalu,
klien harus memperbarui hash berdurasi penuh dengan mengeluarkan permintaan hashes.search
untuk awalan hash tersebut jika URL yang diminta cocok dengan hash lengkap yang ada
dalam cache. Dalam hal ini, durasi cache negatif tidak berlaku. Durasi cache negatif respons hanya berlaku untuk hash berdurasi penuh yang tidak ada dalam respons hashes.search
. Untuk hash berdurasi penuh yang tidak ada dalam respons, klien harus menahan diri untuk tidak mengeluarkan permintaan hashes.search
apa pun sampai durasi cache negatif berlalu.