Migration From V4

การปรับปรุงที่สำคัญอย่างหนึ่งของ Google Safe Browsing เวอร์ชัน 5 เมื่อเทียบกับเวอร์ชัน 4 (โดยเฉพาะ Update API เวอร์ชัน 4) คือความใหม่และความครอบคลุมของข้อมูล เนื่องจากการป้องกันนี้ขึ้นอยู่กับฐานข้อมูลในเครื่องที่ลูกค้าดูแลรักษาเป็นอย่างมาก ความล่าช้าและขนาดของการอัปเดตฐานข้อมูลในเครื่องจึงเป็นสาเหตุหลักของการปกป้องที่ขาดหายไป ใน v4 ไคลเอ็นต์ทั่วไปจะใช้เวลา 20-50 นาทีในการรับรายการภัยคุกคามเวอร์ชันล่าสุด แต่น่าเสียดายที่การโจมตีแบบฟิชชิงแพร่กระจายอย่างรวดเร็ว โดยในปี 2021 เว็บไซต์ 60% ที่ทำการโจมตีจะเผยแพร่อยู่ไม่ถึง 10 นาที การวิเคราะห์ของเราแสดงให้เห็นว่าการป้องกันฟิชชิงที่ขาดหายไปประมาณ 25-30% นั้นเกิดจากข้อมูลดังกล่าวล้าสมัย นอกจากนี้ อุปกรณ์บางเครื่องยังไม่พร้อมที่จะจัดการรายการภัยคุกคามทั้งหมดของ Google Safe Browsing ซึ่งจะเพิ่มมากขึ้นเรื่อยๆ

หากตอนนี้คุณใช้ v4 Update API อยู่ คุณจะย้ายข้อมูลจาก v4 ไปยัง v5 ได้แบบราบรื่นโดยไม่ต้องรีเซ็ตหรือลบฐานข้อมูลในเครื่อง ส่วนนี้จะอธิบายวิธีดำเนินการดังกล่าว

การแปลงการอัปเดตรายการ

ซึ่งแตกต่างจาก V4 ที่ระบบจะระบุรายการด้วยทูเปิลของประเภทภัยคุกคาม ประเภทแพลตฟอร์ม ประเภทรายการภัยคุกคาม แต่ใน V5 ระบบจะระบุรายการด้วยชื่อเท่านั้น ซึ่งให้ความยืดหยุ่นเมื่อรายการ v5 หลายรายการอาจมีภัยคุกคามประเภทเดียวกัน ระบบจะนำประเภทแพลตฟอร์มและประเภทรายการภัยคุกคามออกในเวอร์ชัน 5

ใน v4 ผู้ใช้จะใช้วิธีการ threatListUpdates.fetch เพื่อดาวน์โหลดรายการ ใน v5 ผู้ใช้จะเปลี่ยนไปใช้เมธอด hashLists.batchGet

คุณควรทำการเปลี่ยนแปลงต่อไปนี้ในคำขอ

  1. นำออบเจ็กต์ v4 ClientInfo ออกทั้งหมด แทนที่จะระบุตัวตนของไคลเอ็นต์โดยใช้ช่องเฉพาะ ให้ใช้ส่วนหัว User-Agent ที่รู้จักกันดี แม้ว่าจะไม่มีรูปแบบที่เจาะจงสำหรับการระบุตัวตนลูกค้าในส่วนหัวนี้ แต่เราขอแนะนำให้ระบุรหัสลูกค้าเดิมและเวอร์ชันของลูกค้าโดยคั่นด้วยอักขระเว้นวรรคหรืออักขระเครื่องหมายทับ
  2. สําหรับออบเจ็กต์ ListUpdateRequest v4 แต่ละรายการ ให้ค้นหาชื่อรายการ v5 ที่เกี่ยวข้องในตารางด้านบน แล้วระบุชื่อนั้นในคําขอ v5
    • นำฟิลด์ที่ไม่จำเป็นออก เช่น threat_entry_type หรือ platform_type
    • ฟิลด์ state ใน v4 ใช้งานร่วมกับฟิลด์ versions ใน v5 ได้โดยตรง สตริงไบต์เดียวกันที่จะส่งไปยังเซิร์ฟเวอร์โดยใช้ฟิลด์ state ใน v4 สามารถส่งใน v5 โดยใช้ฟิลด์ versions
    • สำหรับข้อจำกัดของ v4 นั้น v5 จะใช้เวอร์ชันที่เรียบง่ายกว่าซึ่งเรียกว่า SizeConstraints คุณควรยกเลิกฟิลด์เพิ่มเติม เช่น region

คุณควรทำการเปลี่ยนแปลงต่อไปนี้กับการตอบกลับ

  1. enum ResponseType ของ v4 จะถูกแทนที่ด้วยช่องบูลีนชื่อ partial_update
  2. ตอนนี้ช่อง minimum_wait_duration สามารถเป็น 0 หรือละเว้นได้ หากใช่ ระบบจะขอให้ลูกค้าส่งคำขออีกครั้งทันที กรณีนี้จะเกิดขึ้นก็ต่อเมื่อลูกค้าระบุข้อจำกัดขนาดการอัปเดตสูงสุดใน SizeConstraints น้อยกว่าขนาดฐานข้อมูลสูงสุด
  3. จะต้องปรับอัลกอริทึมการถอดรหัส Rice สำหรับจำนวนเต็ม 32 บิต ความแตกต่างคือข้อมูลที่เข้ารหัสจะเข้ารหัสด้วยรูปแบบการเรียงลำดับไบนารีที่แตกต่างกัน ทั้ง v4 และ v5 จะจัดเรียงคำนำหน้าแฮช 32 บิตตามลําดับตัวอักษร แต่ในเวอร์ชัน 4 ระบบจะถือว่าคำนำหน้าเหล่านั้นเป็น Little Endian เมื่อจัดเรียง ส่วนในเวอร์ชัน 5 ระบบจะถือว่าคำนำหน้าเหล่านั้นเป็น Big Endian เมื่อจัดเรียง ซึ่งหมายความว่าไคลเอ็นต์ไม่จําเป็นต้องจัดเรียง เนื่องจากการจัดเรียงตามลําดับตัวอักษรจะเหมือนกับการจัดเรียงตัวเลขด้วย Big Endian ดูตัวอย่างการแยกประเภทนี้ในการใช้งาน Chromium เวอร์ชัน 4 ได้ที่นี่ คุณนำการจัดเรียงดังกล่าวออกได้
  4. จะต้องใช้อัลกอริทึมการถอดรหัส Rice สำหรับแฮชที่มีความยาวอื่นๆ ด้วย

การแปลงการค้นหาแฮช

ใน v4 ผู้ใช้จะใช้fullHashes.find method เพื่อรับแฮชแบบเต็ม เมธอดที่เทียบเท่าใน v5 คือเมธอด hashes.search

คุณควรทำการเปลี่ยนแปลงต่อไปนี้ในคำขอ

  1. จัดโครงสร้างโค้ดให้ส่งเฉพาะคำนำหน้าแฮชที่มีความยาว 4 ไบต์พอดี
  2. นำออบเจ็กต์ v4 ClientInfo ออกทั้งหมด แทนที่จะระบุตัวตนของลูกค้าโดยใช้ช่องเฉพาะ ให้ใช้ส่วนหัว User-Agent ที่รู้จักกันดี แม้ว่าจะไม่มีรูปแบบที่เจาะจงสำหรับการระบุตัวตนลูกค้าในส่วนหัวนี้ แต่เราขอแนะนำให้ระบุรหัสลูกค้าเดิมและเวอร์ชันของลูกค้าโดยคั่นด้วยเว้นวรรคหรือเครื่องหมายทับ
  3. นำช่อง client_states ออก ไม่จำเป็นต้องใช้อีกต่อไป
  4. คุณไม่จำเป็นต้องใส่ threat_types และช่องที่คล้ายกันอีกต่อไป

คุณควรทำการเปลี่ยนแปลงต่อไปนี้กับการตอบกลับ

  1. นําช่อง minimum_wait_duration ออกแล้ว ลูกค้าสามารถส่งคำขอใหม่ได้ตามต้องการเสมอ
  2. ระบบได้ลดความซับซ้อนของออบเจ็กต์ ThreatMatch v4 ให้เป็นออบเจ็กต์ FullHash
  3. แคชได้รับการลดความซับซ้อนให้เป็นระยะเวลาแคชเดียว ดูขั้นตอนการโต้ตอบกับแคชได้ที่ด้านบน