การปรับปรุงที่สำคัญอย่างหนึ่งของ 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
คุณควรทำการเปลี่ยนแปลงต่อไปนี้ในคำขอ
- นำออบเจ็กต์ v4
ClientInfo
ออกทั้งหมด แทนที่จะระบุตัวตนของไคลเอ็นต์โดยใช้ช่องเฉพาะ ให้ใช้ส่วนหัว User-Agent ที่รู้จักกันดี แม้ว่าจะไม่มีรูปแบบที่เจาะจงสำหรับการระบุตัวตนลูกค้าในส่วนหัวนี้ แต่เราขอแนะนำให้ระบุรหัสลูกค้าเดิมและเวอร์ชันของลูกค้าโดยคั่นด้วยอักขระเว้นวรรคหรืออักขระเครื่องหมายทับ - สําหรับออบเจ็กต์
ListUpdateRequest
v4 แต่ละรายการ ให้ค้นหาชื่อรายการ v5 ที่เกี่ยวข้องในตารางด้านบน แล้วระบุชื่อนั้นในคําขอ v5- นำฟิลด์ที่ไม่จำเป็นออก เช่น
threat_entry_type
หรือplatform_type
- ฟิลด์
state
ใน v4 ใช้งานร่วมกับฟิลด์versions
ใน v5 ได้โดยตรง สตริงไบต์เดียวกันที่จะส่งไปยังเซิร์ฟเวอร์โดยใช้ฟิลด์state
ใน v4 สามารถส่งใน v5 โดยใช้ฟิลด์versions
- สำหรับข้อจำกัดของ v4 นั้น v5 จะใช้เวอร์ชันที่เรียบง่ายกว่าซึ่งเรียกว่า
SizeConstraints
คุณควรยกเลิกฟิลด์เพิ่มเติม เช่นregion
- นำฟิลด์ที่ไม่จำเป็นออก เช่น
คุณควรทำการเปลี่ยนแปลงต่อไปนี้กับการตอบกลับ
- enum
ResponseType
ของ v4 จะถูกแทนที่ด้วยช่องบูลีนชื่อpartial_update
- ตอนนี้ช่อง
minimum_wait_duration
สามารถเป็น 0 หรือละเว้นได้ หากใช่ ระบบจะขอให้ลูกค้าส่งคำขออีกครั้งทันที กรณีนี้จะเกิดขึ้นก็ต่อเมื่อลูกค้าระบุข้อจำกัดขนาดการอัปเดตสูงสุดในSizeConstraints
น้อยกว่าขนาดฐานข้อมูลสูงสุด - จะต้องปรับอัลกอริทึมการถอดรหัส Rice สำหรับจำนวนเต็ม 32 บิต ความแตกต่างคือข้อมูลที่เข้ารหัสจะเข้ารหัสด้วยรูปแบบการเรียงลำดับไบนารีที่แตกต่างกัน ทั้ง v4 และ v5 จะจัดเรียงคำนำหน้าแฮช 32 บิตตามลําดับตัวอักษร แต่ในเวอร์ชัน 4 ระบบจะถือว่าคำนำหน้าเหล่านั้นเป็น Little Endian เมื่อจัดเรียง ส่วนในเวอร์ชัน 5 ระบบจะถือว่าคำนำหน้าเหล่านั้นเป็น Big Endian เมื่อจัดเรียง ซึ่งหมายความว่าไคลเอ็นต์ไม่จําเป็นต้องจัดเรียง เนื่องจากการจัดเรียงตามลําดับตัวอักษรจะเหมือนกับการจัดเรียงตัวเลขด้วย Big Endian ดูตัวอย่างการแยกประเภทนี้ในการใช้งาน Chromium เวอร์ชัน 4 ได้ที่นี่ คุณนำการจัดเรียงดังกล่าวออกได้
- จะต้องใช้อัลกอริทึมการถอดรหัส Rice สำหรับแฮชที่มีความยาวอื่นๆ ด้วย
การแปลงการค้นหาแฮช
ใน v4 ผู้ใช้จะใช้fullHashes.find method เพื่อรับแฮชแบบเต็ม เมธอดที่เทียบเท่าใน v5 คือเมธอด hashes.search
คุณควรทำการเปลี่ยนแปลงต่อไปนี้ในคำขอ
- จัดโครงสร้างโค้ดให้ส่งเฉพาะคำนำหน้าแฮชที่มีความยาว 4 ไบต์พอดี
- นำออบเจ็กต์ v4
ClientInfo
ออกทั้งหมด แทนที่จะระบุตัวตนของลูกค้าโดยใช้ช่องเฉพาะ ให้ใช้ส่วนหัว User-Agent ที่รู้จักกันดี แม้ว่าจะไม่มีรูปแบบที่เจาะจงสำหรับการระบุตัวตนลูกค้าในส่วนหัวนี้ แต่เราขอแนะนำให้ระบุรหัสลูกค้าเดิมและเวอร์ชันของลูกค้าโดยคั่นด้วยเว้นวรรคหรือเครื่องหมายทับ - นำช่อง
client_states
ออก ไม่จำเป็นต้องใช้อีกต่อไป - คุณไม่จำเป็นต้องใส่
threat_types
และช่องที่คล้ายกันอีกต่อไป
คุณควรทำการเปลี่ยนแปลงต่อไปนี้กับการตอบกลับ
- นําช่อง
minimum_wait_duration
ออกแล้ว ลูกค้าสามารถส่งคำขอใหม่ได้ตามต้องการเสมอ - ระบบได้ลดความซับซ้อนของออบเจ็กต์
ThreatMatch
v4 ให้เป็นออบเจ็กต์FullHash
- แคชได้รับการลดความซับซ้อนให้เป็นระยะเวลาแคชเดียว ดูขั้นตอนการโต้ตอบกับแคชได้ที่ด้านบน