Jika klien memilih untuk menggunakan Google Safe Browsing v5 dalam mode real-time, klien akan menyimpan dalam database lokalnya: (i) Cache Global situs yang kemungkinan tidak berbahaya, yang diformat sebagai hash SHA256 dari ekspresi URL akhiran host/awalan jalur, (ii) serangkaian daftar ancaman, yang diformat sebagai awalan hash SHA256 dari ekspresi URL akhiran host/awalan jalur. Ide tingkat tingginya adalah bahwa setiap kali klien ingin memeriksa URL tertentu, pemeriksaan lokal dilakukan menggunakan Cache Global. Jika pemeriksaan tersebut lulus, pemeriksaan daftar ancaman lokal akan dilakukan. Jika tidak, klien akan melanjutkan pemeriksaan hash real-time seperti yang dijelaskan di bawah.
Selain database lokal, klien akan mempertahankan cache lokal. Cache lokal tersebut tidak perlu berada di penyimpanan persisten dan dapat dihapus jika terjadi tekanan memori.
Spesifikasi mendetail dari prosedur ini tersedia di bawah.
Prosedur Pemeriksaan URL Real-Time
Prosedur ini menggunakan satu URL u dan menampilkan SAFE, UNSAFE, atau UNSURE. Jika menampilkan SAFE, URL dianggap aman oleh Google Safe Browsing. Jika menampilkan UNSAFE, URL dianggap berpotensi tidak aman oleh Google Safe Browsing dan tindakan yang tepat harus dilakukan: seperti menampilkan peringatan kepada pengguna akhir, memindahkan pesan yang diterima ke folder spam, atau mewajibkan konfirmasi tambahan oleh pengguna sebelum melanjutkan. Jika menampilkan UNSURE, prosedur pemeriksaan lokal berikut harus digunakan setelahnya.
- Biarkan
expressionsmenjadi daftar ekspresi akhiran/awalan yang dihasilkan oleh URLu. - Misalkan
expressionHashesadalah daftar, dengan elemen berupa hash SHA256 dari setiap ekspresi diexpressions. - Untuk setiap
hashdariexpressionHashes:- Jika
hashdapat ditemukan dalam cache global, tampilkanUNSURE.
- Jika
- Misalkan
expressionHashPrefixesadalah daftar, dengan elemen berupa 4 byte pertama setiap hash diexpressionHashes. - Untuk setiap
expressionHashPrefixdariexpressionHashPrefixes:- Cari
expressionHashPrefixdi cache lokal. - Jika entri yang di-cache ditemukan:
- Tentukan apakah waktu saat ini lebih besar daripada waktu habis masa berlakunya.
- Jika lebih besar:
- Hapus entri yang ditemukan dan di-cache dari cache lokal.
- Lanjutkan dengan loop.
- Jika tidak lebih besar:
- Menghapus
expressionHashPrefixtertentu ini dariexpressionHashPrefixes. - Periksa apakah hash lengkap yang sesuai dalam
expressionHashesditemukan dalam entri yang di-cache. - Jika ditemukan, tampilkan
UNSAFE. - Jika tidak ditemukan, lanjutkan dengan loop.
- Menghapus
- Jika entri yang di-cache tidak ditemukan, lanjutkan dengan loop.
- Cari
- Kirim
expressionHashPrefixeske server Google Safe Browsing v5 menggunakan RPC SearchHashes atau metode REST hashes.search. Jika terjadi error (termasuk error jaringan, error HTTP, dll.), tampilkanUNSURE. Jika tidak, biarkan respons menjadiresponseyang diterima dari server SB, yang merupakan daftar hash lengkap beserta beberapa informasi tambahan yang mengidentifikasi sifat ancaman (rekayasa sosial, malware, dll.), serta waktu habis masa berlaku cacheexpiration. - Untuk setiap
fullHashdariresponse:- Sisipkan
fullHashke dalam cache lokal, bersama denganexpiration.
- Sisipkan
- Untuk setiap
fullHashdariresponse:- Biarkan
isFoundmenjadi hasil dari menemukanfullHashdiexpressionHashes. - Jika
isFoundadalah False, lanjutkan dengan loop. - Jika
isFoundadalah Benar (True), tampilkanUNSAFE.
- Biarkan
- Kembalikan
SAFE.
Meskipun protokol ini menentukan kapan klien mengirim expressionHashPrefixes ke server, protokol ini sengaja tidak menentukan secara persis cara mengirimkannya. Misalnya, klien dapat mengirim semua expressionHashPrefixes dalam satu permintaan, dan klien juga dapat mengirim setiap awalan individual dalam expressionHashPrefixes ke server dalam permintaan terpisah (mungkin secara paralel). Klien juga dapat mengirimkan awalan hash yang tidak terkait atau dibuat secara acak bersama dengan awalan hash di expressionHashPrefixes, selama jumlah awalan hash yang dikirim dalam satu permintaan tidak melebihi 30.