Menggunakan Update API
Ringkasan
Update API memungkinkan aplikasi klien Anda mendownload versi yang di-hash dari daftar Risiko Web untuk disimpan di database lokal atau dalam memori. URL kemudian dapat diperiksa secara lokal. Jika kecocokan ditemukan di database lokal, klien akan mengirim permintaan ke server Web Risk untuk memverifikasi apakah URL tersebut termasuk dalam daftar Web Risk atau tidak.
Memperbarui database lokal
Agar tetap terbaru, klien harus memperbarui daftar Risiko Web secara berkala di database lokal mereka. Untuk menghemat bandwidth, klien mendownload awalan hash URL, bukan URL mentah. Misalnya, jika "www.badurl.com/" ada dalam daftar Web Risk, klien akan mendownload awalan hash SHA256 URL tersebut, bukan URL itu sendiri. Dalam sebagian besar kasus, awalan hash memiliki panjang 4 byte, yang berarti biaya bandwidth rata-rata untuk mendownload satu entri daftar adalah 4 byte sebelum kompresi.
Untuk memperbarui daftar Risiko Web di database lokal, kirim permintaan HTTP
GET
ke
metode
threatLists.computeDiff
:
- Permintaan HTTP
GET
mencakup nama daftar yang akan diperbarui beserta batasan klien untuk memperhitungkan batasan memori dan bandwidth. - Respons HTTP
GET
menampilkan update penuh atau update sebagian. Respons dapat juga menampilkan waktu tunggu yang direkomendasikan hingga operasi perbedaan komputasi berikutnya.
Contoh: threatLists.computeDiff
Permintaan HTTP GET
Dalam contoh berikut, perbedaan untuk daftar Web Risk MALWARE diminta. Untuk mengetahui detail selengkapnya, lihat
parameter kueri threatLists.computeDiff
dan penjelasan yang mengikuti contoh kode.
Metode HTTP dan URL:
GET https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
"https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY"
PowerShell
Jalankan perintah berikut:
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{ "recommendedNextDiff": "2020-01-08T19:41:45.436722194Z", "responseType": "RESET", "additions": { "rawHashes": [ { "prefixSize": 4, "rawHashes": "AArQMQAMoUgAPn8lAE..." } ] }, "newVersionToken": "ChAIARAGGAEiAzAwMSiAEDABEPDyBhoCGAlTcIVL", "checksum": { "sha256": "wy6jh0+MAg/V/+VdErFhZIpOW+L8ulrVwhlV61XkROI=" } }
Java
Python
Daftar Web Risk
Kolom threatType
mengidentifikasi daftar Web Risk. Dalam
contoh, perbedaan untuk daftar Web Risk MALWARE diminta.
Token versi
Kolom versionToken
menyimpan status klien saat ini dari daftar Web Risk.
Token Versi ditampilkan di kolom newVersionToken
dari
respons threatLists.computeDiff.
Untuk update awal, biarkan kolom versionToken
kosong.
Batasan ukuran
Kolom maxDiffEntries
menentukan jumlah total update yang dapat dikelola klien (dalam contoh, 2048). Kolom maxDatabaseEntries
menentukan jumlah total entri yang dapat dikelola oleh database lokal (dalam
contoh, 4096). Klien harus menetapkan batasan ukuran untuk melindungi batasan memori dan bandwidth serta untuk melindungi dari pertumbuhan daftar. Untuk
mengetahui informasi selengkapnya, lihat Batasan Update).
Kompresi yang didukung
Kolom supportedCompressions
mencantumkan jenis kompresi yang didukung klien. Dalam contoh, klien hanya mendukung data mentah yang tidak dikompresi.
Namun, Web Risk mendukung jenis kompresi tambahan. Untuk mengetahui informasi selengkapnya, lihat Kompresi.
Respons HTTP GET
Dalam contoh ini, respons menampilkan update sebagian untuk daftar Web Risk menggunakan jenis kompresi yang diminta.
Isi respons
Isi respons mencakup informasi perbedaan (jenis respons, penambahan dan penghapusan yang akan diterapkan ke database lokal, token versi baru, dan checksum).
Dalam contoh, respons juga mencakup waktu perbedaan berikutnya yang direkomendasikan. Untuk mengetahui detail selengkapnya, lihat
isi respons threatLists.computeDiff
dan penjelasan yang mengikuti contoh kode.
{ "responseType" : "DIFF", "recommendedNextDiff": "2019-12-31T23:59:59.000000000Z", "additions": { "compressionType": "RAW", "rawHashes": [{ "prefixSize": 4, "rawHashes": "rnGLoQ==" }] }, "removals": { "rawIndices": { "indices": [0, 2, 4] } }, "newVersionToken": "ChAIBRADGAEiAzAwMSiAEDABEAFGpqhd", "checksum": { "sha256": "YSgoRtsRlgHDqDA3LAhM1gegEpEzs1TjzU33vqsR8iM=" }, "recommendedNextDiff": "2019-07-17T15:01:23.045123456Z" }
Perbedaan database
Kolom responseType
akan menunjukkan pembaruan sebagian (DIFF
) atau penuh
(RESET
). Dalam contoh ini, perbedaan sebagian ditampilkan, sehingga respons
mencakup penambahan dan penghapusan. Mungkin ada beberapa set penambahan,
tetapi hanya ada satu set penghapusan. Untuk mengetahui informasi selengkapnya, lihat
Perbedaan Database.
Token versi baru
Kolom newVersionToken
menyimpan token versi baru untuk daftar Web Risk yang baru diupdate. Klien harus menyimpan status klien baru untuk permintaan update berikutnya (kolom versionToken
dalam permintaan threatLists.computeDiff
.
Checksums
Checksum memungkinkan klien memverifikasi bahwa database lokal tidak mengalami kerusakan apa pun. Jika checksum tidak cocok, klien harus menghapus database
dan menerbitkan ulang update dengan kolom versionToken
yang kosong. Namun, klien dalam situasi ini tetap harus mengikuti interval waktu untuk update. Untuk mengetahui
informasi selengkapnya, lihat Frekuensi Permintaan.
Perbedaan berikutnya yang direkomendasikan
Kolom recommendedNextDiff
menunjukkan stempel waktu hingga kapan klien harus menunggu sebelum mengirim permintaan update lain. Perhatikan bahwa periode tunggu yang direkomendasikan mungkin disertakan atau tidak dalam respons. Untuk mengetahui detail selengkapnya, lihat Frekuensi Permintaan.
Memeriksa URL
Untuk memeriksa apakah suatu URL ada dalam daftar Web Risk, klien harus menghitung hash dan awalan hash URL terlebih dahulu. Untuk mengetahui detailnya, lihat URL dan Hashing. Klien kemudian mengkueri database lokal untuk menentukan apakah ada kecocokan. Jika awalan hash tidak ada di database lokal, maka URL dianggap aman (yaitu, tidak ada di daftar Web Risk).
Jika awalan hash ada di database lokal (terjadi tabrakan awalan hash), klien harus mengirim awalan hash ke server Web Risk untuk verifikasi. Server akan menampilkan semua hash SHA 256 lengkap yang berisi awalan hash tertentu. Jika salah satu hash panjang tersebut cocok dengan hash panjang URL yang dimaksud, maka URL tersebut dianggap tidak aman. Jika tidak ada hash panjang penuh yang cocok dengan hash panjang penuh URL yang dipermasalahkan, maka URL tersebut dianggap aman.
Google tidak pernah mengetahui URL yang Anda periksa. Google memang mempelajari awalan hash URL, tetapi awalan hash tidak memberikan banyak informasi tentang URL sebenarnya.
Untuk memeriksa apakah URL ada dalam daftar Web Risk, kirim permintaan HTTP GET
ke metode
hashes.search
:
- Permintaan HTTP
GET
mencakup awalan hash URL yang akan diperiksa. - Respons HTTP
GET
menampilkan hash panjang penuh yang cocok beserta waktu habis berlaku positif dan negatif.
Contoh: hashes.search
Permintaan HTTP GET
Dalam contoh berikut, nama dua daftar Web Risk dan awalan hash dikirim untuk perbandingan dan verifikasi. Untuk mengetahui detail selengkapnya, lihat
parameter kueri hashes.search
dan penjelasan yang mengikuti contoh kode.
curl \ -H "Content-Type: application/json" \ "https://webrisk.googleapis.com/v1/hashes:search?key=YOUR_API_KEY&threatTypes=MALWARE&threatTypes=SOCIAL_ENGINEERING&hashPrefix=WwuJdQ%3D%3D"
Java
Python
Daftar Web Risk
Kolom threatTypes
mengidentifikasi daftar Web Risk. Dalam
contoh, dua daftar diidentifikasi: MALWARE
dan SOCIAL_ENGINEERING
.
Awalan hash ancaman
Kolom hashPrefix
berisi awalan hash URL yang ingin Anda periksa. Kolom ini harus berisi awalan hash persis yang ada di database lokal. Misalnya, jika awalan hash lokal memiliki panjang 4 byte, maka kolom hashPrefix
harus memiliki panjang 4 byte. Jika awalan hash lokal diperpanjang menjadi 7 byte, kolom hashPrefix
harus memiliki panjang 7 byte.
Respons HTTP GET
Dalam contoh berikut, respons menampilkan ancaman yang cocok, yang berisi daftar Web Risk yang cocok, beserta waktu berakhirnya.
Isi respons
Isi respons mencakup informasi kecocokan (nama daftar dan hash panjang penuh serta durasi cache). Untuk mengetahui detail selengkapnya, lihat
isi respons hashes.search
dan penjelasan yang mengikuti contoh kode.
{ "threats": [{ "threatTypes": ["MALWARE"], "hash": "WwuJdQx48jP-4lxr4y2Sj82AWoxUVcIRDSk1PC9Rf-4=" "expireTime": "2019-07-17T15:01:23.045123456Z" }, { "threatTypes": ["MALWARE", "SOCIAL_ENGINEERING"], "hash": "WwuJdQxaCSH453-uytERC456gf45rFExcE23F7-hnfD=" "expireTime": "2019-07-17T15:01:23.045123456Z" }, }], "negativeExpireTime": "2019-07-17T15:01:23.045123456Z" }
Mencocokkan dengan
Kolom threats
menampilkan hash panjang penuh yang cocok untuk awalan hash.
URL yang sesuai dengan hash ini dianggap tidak aman. Jika tidak ada kecocokan
yang ditemukan untuk awalan hash, tidak ada yang ditampilkan; URL yang sesuai dengan awalan hash tersebut dianggap aman.
Masa berlaku
Kolom expireTime
dan negativeExpireTime
menunjukkan hingga kapan hash harus dianggap tidak aman atau aman. Untuk mengetahui detail selengkapnya, lihat Caching.