Menggunakan Update API
Ringkasan
Dengan Update API, aplikasi klien Anda dapat mendownload versi yang di-hash dari daftar Web Risk untuk disimpan di database lokal atau dalam memori. URL kemudian dapat diperiksa secara lokal. Ketika kecocokan ditemukan di database lokal, klien akan mengirimkan permintaan ke server Web Risk untuk memverifikasi apakah URL disertakan dalam daftar Web Risk atau tidak.
Memperbarui database lokal
Agar tetap mendapatkan informasi terbaru, klien diwajibkan untuk memperbarui daftar Web Risk 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 dari URL tersebut, bukan URL itu sendiri. Pada umumnya, awalan hash panjangnya 4 byte. Artinya, biaya bandwidth rata-rata untuk mendownload satu entri daftar adalah 4 byte sebelum kompresi.
Untuk memperbarui daftar Web Risk di database lokal, kirim permintaan HTTP GET
ke metode threatLists.computeDiff
:
- Permintaan
GET
HTTP menyertakan nama daftar yang akan diperbarui beserta batasan klien untuk memperhitungkan batasan memori dan bandwidth. - Respons
GET
HTTP menampilkan update lengkap atau update sebagian. Respons bisa juga menampilkan waktu tunggu yang direkomendasikan hingga operasi perbedaan komputasi berikutnya.
Contoh: ancamanLists.computeDiff
Permintaan GET HTTP
Pada contoh berikut, perbedaan untuk daftar MALWARE Web Risk akan 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
menunjukkan daftar Web Risk. Dalam
contoh, perbedaan untuk daftar MALWARE Web Risk diminta.
Token versi
Kolom versionToken
menyimpan status klien saat ini dari daftar
Web Risk.
Token Versi ditampilkan di kolom newVersionToken
pada respons threatLists.computeDiff.
Untuk update awal, kosongkan kolom versionToken
.
Batasan ukuran
Kolom maxDiffEntries
menentukan jumlah total update yang dapat dikelola
klien (dalam contoh, 2048). Kolom maxDatabaseEntries
menentukan jumlah total entri yang dapat dikelola database lokal (misalnya, 4096). Klien harus menetapkan batasan ukuran untuk melindungi batasan memori dan bandwidth, serta agar tidak terjadi pertumbuhan daftar. Untuk
mengetahui informasi selengkapnya, lihat Memperbarui Batasan).
Kompresi yang didukung
Kolom supportedCompressions
mencantumkan jenis kompresi yang didukung klien. Dalam contoh, klien hanya mendukung data mentah dan 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 diff (jenis respons, penambahan, dan penghapusan yang akan diterapkan ke database lokal, token versi baru, dan checksum).
Dalam contoh, respons juga menyertakan
waktu diff 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 update sebagian (DIFF
) atau update lengkap
(RESET
). Dalam contoh, perbedaan parsial ditampilkan, sehingga respons
menyertakan penambahan dan penghapusan. Mungkin ada beberapa kumpulan tambahan,
tetapi hanya satu kumpulan penghapusan. Untuk informasi selengkapnya, lihat Database Diffs.
Token versi baru
Kolom newVersionToken
menyimpan token versi baru untuk daftar
Web Risk yang baru diperbarui. 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. 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 pembaruan. Untuk mengetahui
informasi selengkapnya, lihat Frekuensi Permintaan.
Perbedaan berikutnya yang direkomendasikan
Kolom recommendedNextDiff
menunjukkan stempel waktu hingga saat klien
harus menunggu sebelum mengirim permintaan update lainnya. Perlu diperhatikan bahwa periode tunggu yang direkomendasikan mungkin disertakan atau tidak disertakan dalam respons. Untuk mengetahui detail selengkapnya,
lihat Frekuensi Permintaan.
Memeriksa URL
Untuk memeriksa apakah URL ada dalam daftar Web Risk atau tidak, klien harus terlebih dahulu menghitung awalan hash dan hash URL. Untuk mengetahui detailnya, lihat URL dan Hashing. Klien kemudian membuat kueri {i>database<i} lokal untuk menentukan apakah ada kecocokan. Jika awalan hash tidak ada dalam database lokal, maka URL akan dianggap aman (artinya, tidak termasuk dalam daftar Web Risk).
Jika awalan hash ada di database lokal (tumbukan awalan hash), klien harus mengirim awalan hash tersebut ke server Web Risk untuk diverifikasi. Server akan menampilkan semua hash SHA 256 panjang lengkap yang berisi awalan hash yang diberikan. Jika salah satu hash lengkap tersebut cocok dengan hash lengkap dari URL yang dimaksud, URL akan dianggap tidak aman. Jika tidak ada hash lengkap yang cocok dengan hash lengkap dari URL yang dimaksud, maka URL tersebut dianggap aman.
Google tidak akan mempelajari URL yang Anda periksa. Google mempelajari awalan hash URL, tetapi awalan hash tersebut 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
GET
HTTP menyertakan awalan hash URL yang akan diperiksa. - Respons
GET
HTTP menampilkan hash lengkap yang cocok beserta waktu habis masa berlaku positif dan negatif.
Contoh: hashes.search
Permintaan GET HTTP
Pada contoh berikut, nama dua daftar Web Risk dan awalan hash akan 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 yang sama persis dengan yang ada di database lokal. Misalnya, jika panjang awalan hash lokal adalah 4 byte, maka kolom hashPrefix
harus sepanjang 4 byte. Jika awalan hash lokal
diperpanjang hingga 7 byte, panjang kolom hashPrefix
harus 7 byte.
Respons HTTP GET
Pada contoh berikut, respons menampilkan ancaman yang cocok, yang berisi daftar Web Risk yang cocok, beserta waktu habis masa berlakunya.
Isi respons
Isi respons menyertakan informasi kecocokan (nama daftar dan hash
lengkap 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 lengkap yang cocok untuk awalan hash.
URL yang sesuai dengan hash ini dianggap tidak aman. Jika tidak ditemukan kecocokan untuk awalan hash, tidak ada yang akan ditampilkan; URL yang sesuai dengan awalan hash tersebut dianggap aman.
Masa berlaku
Kolom expireTime
dan negativeExpireTime
menunjukkan sampai kapan hash
harus dianggap tidak aman atau aman. Untuk mengetahui detail selengkapnya,
lihat Menyimpan ke cache.