No Storage Real Time Mode

เมื่อไคลเอ็นต์เลือกใช้ Google Safe Browsing v5 ในโหมดเรียลไทม์แบบไม่จัดเก็บ ไคลเอ็นต์ไม่จำเป็นต้องดูแลฐานข้อมูลในเครื่องแบบถาวร อย่างไรก็ตาม คาดว่าไคลเอ็นต์จะยังคงต้องดูแลแคชในเครื่อง แคชในเครื่องดังกล่าวไม่จำเป็นต้องอยู่ในพื้นที่เก็บข้อมูลแบบถาวร และอาจล้างได้ในกรณีที่หน่วยความจำเต็ม

เมื่อใดก็ตามที่ไคลเอ็นต์ต้องการตรวจสอบ URL ที่เฉพาะเจาะจง ไคลเอ็นต์จะเชื่อมต่อกับเซิร์ฟเวอร์เพื่อทำการตรวจสอบเสมอ โหมดนี้คล้ายกับสิ่งที่ไคลเอ็นต์ของ Lookup API เวอร์ชัน 4 อาจนำไปใช้

เมื่อเทียบกับโหมดเรียลไทม์ โหมดนี้อาจใช้แบนด์วิดท์เครือข่ายมากกว่า แต่ก็อาจเหมาะสมกว่าหากไคลเอ็นต์ไม่สะดวกที่จะรักษาสถานะภายในที่ต่อเนื่อง

ขั้นตอนการตรวจสอบ URL แบบเรียลไทม์โดยไม่มีฐานข้อมูลในเครื่อง

ขั้นตอนนี้จะใช้ URL เดียว u และแสดงผล SAFE หรือ UNSAFE

  1. ให้ expressions เป็นรายการนิพจน์คำต่อท้าย/คำนำหน้าที่สร้างโดย URL u
  2. ให้ expressionHashes เป็นรายการที่องค์ประกอบเป็นแฮช SHA256 ของแต่ละนิพจน์ใน expressions
  3. ให้ expressionHashPrefixes เป็นรายการที่องค์ประกอบคือ 4 ไบต์แรกของแต่ละแฮชใน expressionHashes
  4. สำหรับแต่ละ expressionHashPrefix ของ expressionHashPrefixes ให้ทำดังนี้
    1. ค้นหา expressionHashPrefix ในแคชในเครื่อง
    2. หากพบรายการที่แคชไว้ ให้ทำดังนี้
      1. พิจารณาว่าเวลาปัจจุบันมากกว่าเวลาหมดอายุหรือไม่
      2. หากมากกว่า ให้ทำดังนี้
        1. นำรายการที่แคชที่พบออกจากแคชในเครื่อง
        2. เล่นลูปต่อ
      3. หากไม่มากกว่า ให้ทำดังนี้
        1. นำ expressionHashPrefix นี้ออกจาก expressionHashPrefixes
        2. ตรวจสอบว่าพบแฮชแบบเต็มที่เกี่ยวข้องภายใน expressionHashes ในรายการที่แคชไว้หรือไม่
        3. หากพบ ให้ส่งคืน UNSAFE
        4. หากไม่พบ ให้ดำเนินการต่อในลูป
    3. หากไม่พบรายการที่แคชไว้ ให้ดำเนินการต่อในลูป
  5. ส่ง expressionHashPrefixes ไปยังเซิร์ฟเวอร์ Google Safe Browsing v5 โดยใช้ RPC SearchHashes หรือเมธอด REST hashes.search หากเกิดข้อผิดพลาด (รวมถึงข้อผิดพลาดเกี่ยวกับเครือข่าย ข้อผิดพลาด HTTP ฯลฯ) ให้แสดงผล SAFE ไม่เช่นนั้น ให้การตอบกลับเป็น response ที่ได้รับจากเซิร์ฟเวอร์ SB ซึ่งเป็นรายการแฮชแบบเต็มพร้อมกับข้อมูลเสริมบางอย่างที่ระบุลักษณะของภัยคุกคาม (วิศวกรรมสังคม มัลแวร์ ฯลฯ) รวมถึงเวลาหมดอายุของแคช expiration
  6. สำหรับแต่ละ fullHash ของ response ให้ทำดังนี้
    1. แทรก fullHash ลงในแคชในเครื่องพร้อมกับ expiration
  7. สำหรับแต่ละ fullHash ของ response ให้ทำดังนี้
    1. ให้ isFound เป็นผลลัพธ์ของการค้นหา fullHash ใน expressionHashes
    2. หาก isFound เป็น False ให้ดำเนินการต่อในลูป
    3. หาก isFound เป็นจริง ให้แสดงผล UNSAFE
  8. กลับ SAFE

เช่นเดียวกับโหมดเรียลไทม์ ขั้นตอนนี้ไม่ได้ระบุวิธีส่งคำนำหน้าแฮชไปยังเซิร์ฟเวอร์อย่างชัดเจน เช่น ลูกค้าสามารถส่ง expressionHashPrefixes ทั้งหมดในคำขอเดียวได้ และลูกค้ายังสามารถส่งแต่ละคำนำหน้าใน expressionHashPrefixes ไปยังเซิร์ฟเวอร์ในคำขอแยกกันได้ (อาจดำเนินการแบบขนาน) นอกจากนี้ ไคลเอ็นต์ยังส่งคำนำหน้าแฮชที่ไม่เกี่ยวข้องหรือสร้างขึ้นแบบสุ่มพร้อมกับคำนำหน้าแฮชใน expressionHashPrefixes ได้ด้วย ตราบใดที่จำนวนคำนำหน้าแฮชที่ส่งในคำขอเดียวไม่เกิน 30 รายการ