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 disertakan dalam daftar Web Risk.
Memperbarui database lokal
Agar tetap terbaru, klien diwajibkan untuk 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
GET
HTTP 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 penuh atau update sebagian. Respons dapat juga menampilkan waktu tunggu yang direkomendasikan hingga operasi hitung perbedaan berikutnya.
Contoh: threatLists.computeDiff
Permintaan GET HTTP
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 Risiko Web.
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 database lokal (dalam
contoh, 4096). Klien harus menetapkan batasan ukuran untuk melindungi memori dan
batasan bandwidth serta untuk mencegah pertumbuhan daftar. Untuk
mengetahui informasi selengkapnya, lihat Batasan Update).
Kompresi yang didukung
Kolom supportedCompressions
mencantumkan jenis kompresi yang didukung klien. Dalam contoh ini, 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 pembaruan sebagian untuk daftar Risiko Web menggunakan jenis kompresi yang diminta.
Isi respons
Isi respons menyertakan informasi perbedaan (jenis respons, penambahan dan penghapusan yang akan diterapkan ke database lokal, token versi baru, dan checksum).
Dalam contoh, respons juga menyertakan
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, perbedaan sebagian ditampilkan, sehingga respons
menyertakan penambahan dan penghapusan. Mungkin ada beberapa kumpulan penambahan,
tetapi hanya satu kumpulan penghapusan. Untuk mengetahui informasi selengkapnya, lihat
Database Diffs.
Token versi baru
Kolom newVersionToken
menyimpan token versi baru untuk daftar Risiko Web yang baru saja 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
kosong. Namun, klien dalam situasi ini
masih harus mengikuti interval waktu untuk update. Untuk mengetahui informasi
selengkapnya, lihat Frekuensi Permintaan.
Rekomendasi perbedaan berikutnya
Kolom recommendedNextDiff
menunjukkan stempel waktu hingga klien
harus menunggu sebelum mengirim permintaan update lainnya. Perhatikan bahwa periode tunggu
yang direkomendasikan dapat disertakan atau tidak disertakan dalam respons. Untuk mengetahui detail selengkapnya,
lihat Frekuensi Permintaan.
Memeriksa URL
Untuk memeriksa apakah URL ada dalam daftar Web Risk, klien harus terlebih dahulu menghitung hash dan awalan hash URL. 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, URL tersebut dianggap aman (yaitu, tidak ada dalam daftar Web Risk).
Jika awalan hash ada di database lokal (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 yang diberikan. Jika salah satu hash panjang penuh tersebut cocok dengan hash panjang penuh dari URL yang dimaksud, URL tersebut dianggap tidak aman. Jika tidak ada hash panjang penuh yang cocok dengan hash panjang penuh URL yang dipermasalahkan, URL tersebut dianggap aman.
Google tidak akan pernah mengetahui URL yang Anda periksa. Google mempelajari awalan hash URL, tetapi awalan hash tidak memberikan banyak informasi tentang URL yang sebenarnya.
Untuk memeriksa apakah URL ada dalam daftar Web Risk, kirim permintaan GET
HTTP
ke metode
hashes.search
:
- Permintaan
GET
HTTP menyertakan awalan hash URL yang akan diperiksa. - Respons
GET
HTTP menampilkan hash panjang penuh yang cocok beserta waktu habis masa berlaku positif dan negatif.
Contoh: hashes.search
Permintaan GET HTTP
Dalam contoh berikut, nama dua daftar Risiko Web 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 yang sama persis dengan 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 berukuran 7 byte.
Respons HTTP GET
Dalam contoh berikut, respons menampilkan ancaman yang cocok, yang berisi daftar Risiko Web yang cocok, beserta waktu habis masa berlakunya.
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 detail selengkapnya,
lihat Menyimpan ke dalam cache.