Real Time Mode

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.

  1. Biarkan expressions menjadi daftar ekspresi akhiran/awalan yang dihasilkan oleh URL u.
  2. Misalkan expressionHashes adalah daftar, dengan elemen berupa hash SHA256 dari setiap ekspresi di expressions.
  3. Untuk setiap hash dari expressionHashes:
    1. Jika hash dapat ditemukan dalam cache global, tampilkan UNSURE.
  4. Misalkan expressionHashPrefixes adalah daftar, dengan elemen berupa 4 byte pertama setiap hash di expressionHashes.
  5. Untuk setiap expressionHashPrefix dari expressionHashPrefixes:
    1. Cari expressionHashPrefix di cache lokal.
    2. Jika entri yang di-cache ditemukan:
      1. Tentukan apakah waktu saat ini lebih besar daripada waktu habis masa berlakunya.
      2. Jika lebih besar:
        1. Hapus entri yang ditemukan dan di-cache dari cache lokal.
        2. Lanjutkan dengan loop.
      3. Jika tidak lebih besar:
        1. Menghapus expressionHashPrefix tertentu ini dari expressionHashPrefixes.
        2. Periksa apakah hash lengkap yang sesuai dalam expressionHashes ditemukan dalam entri yang di-cache.
        3. Jika ditemukan, tampilkan UNSAFE.
        4. Jika tidak ditemukan, lanjutkan dengan loop.
    3. Jika entri yang di-cache tidak ditemukan, lanjutkan dengan loop.
  6. Kirim expressionHashPrefixes ke server Google Safe Browsing v5 menggunakan RPC SearchHashes atau metode REST hashes.search. Jika terjadi error (termasuk error jaringan, error HTTP, dll.), tampilkan UNSURE. Jika tidak, biarkan respons menjadi response yang 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 cache expiration.
  7. Untuk setiap fullHash dari response:
    1. Sisipkan fullHash ke dalam cache lokal, bersama dengan expiration.
  8. Untuk setiap fullHash dari response:
    1. Biarkan isFound menjadi hasil dari menemukan fullHash di expressionHashes.
    2. Jika isFound adalah False, lanjutkan dengan loop.
    3. Jika isFound adalah Benar (True), tampilkan UNSAFE.
  9. 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.