ฐานข้อมูลท้องถิ่น

เอกสารนี้ใช้กับวิธีการต่อไปนี้ Update API (v4): threatListUpdates.fetch

การตั้งค่าฐานข้อมูล

ไคลเอ็นต์ที่ใช้ API การอัปเดตจำเป็นต้องตั้งค่าฐานข้อมูลในเครื่องและเพื่อดาวน์โหลดรายการ Safe Browsing เบื้องต้นที่ต้องการใช้งาน หากต้องการเริ่มใช้งาน ให้สร้างและทำให้แพ็กเกจ safebrowsing Go ใช้งานได้ (หรือใช้แพ็กเกจเพื่อจำลองการใช้งานของคุณเอง) ดูข้อมูลเพิ่มเติมได้ที่ https://github.com/google/safebrowsing/

การอัปเดตฐานข้อมูล

เราขอแนะนำให้ลูกค้าอัปเดตรายการ Google Safe Browsing ภายในเครื่องเป็นประจำโดยใช้เมธอด threatListUpdates.fetch เพื่อป้องกันภัยคุกคามล่าสุด คำขอ threatListUpdates.fetch ระบุรายการที่จะอัปเดต หากลูกค้ามีข้อจำกัดด้านหน่วยความจำหรือแบนด์วิดท์ ไคลเอ็นต์จะใช้คำขอเพื่อกำหนดข้อจำกัดการอัปเดตได้เช่นกัน (ดูข้อจำกัดการอัปเดต) การตอบกลับ threatListUpdates.fetch จะแสดงการอัปเดตแบบเต็มหรือการอัปเดตบางส่วนสำหรับแต่ละรายการตามที่อธิบายไว้ด้านล่าง

ข้อมูลอัปเดตทั้งหมด

ระบบจะแสดงการอัปเดตทั้งหมดเมื่อไคลเอ็นต์ปล่อยให้ช่อง state ในคำขอ threatListUpdates.fetch ว่างเปล่า หรือเมื่อเซิร์ฟเวอร์พิจารณาว่าจำเป็นต้องมีการอัปเดตอย่างเต็มรูปแบบ สำหรับการอัปเดตทั้งหมด ระบบจะแสดงเฉพาะการเพิ่มเท่านั้น คาดว่าไคลเอ็นต์จะต้องล้างฐานข้อมูลในเครื่องก่อนที่จะใช้การอัปเดตและทำการตรวจสอบความถูกต้อง

สถานะว่างเปล่า

ระบบจะแสดงการอัปเดตทั้งหมดเมื่อไคลเอ็นต์ส่งคำขอเริ่มต้นสำหรับรายการ ในกรณีนี้ ช่อง state ในคำขอว่างเปล่า (เพราะไม่มีค่าที่จะระบุ) และช่อง newClientState ในการตอบกลับจะแสดงสถานะเริ่มต้นของรายการในเครื่อง ระบบจะแสดงการอัปเดตทั้งหมดเมื่อไคลเอ็นต์ตั้งใจปล่อยช่อง state ให้ว่างไว้ในคำขอที่ตามมา การดำเนินการนี้จะบังคับให้อัปเดตเต็มรูปแบบและส่งคืนสถานะใหม่ในช่อง newClientState ของการตอบกลับ

การตัดสินใจเกี่ยวกับเซิร์ฟเวอร์

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

การอัปเดตบางส่วน

ระบบจะแสดงการอัปเดตบางส่วนเมื่อไคลเอ็นต์ระบุค่าสำหรับช่อง state ในคำขอ threatListUpdates.fetch (ข้อยกเว้นตามที่ระบุไว้ข้างต้นคือกรณีที่เซิร์ฟเวอร์พิจารณาว่าจำเป็นต้องมีการอัปเดตอย่างเต็มรูปแบบ) สำหรับการอัปเดตบางส่วน ระบบจะแสดงผลทั้งการเพิ่มและการนำออก ไคลเอ็นต์จะอัปเดตรายการในฐานข้อมูลในเครื่อง (ใช้การนำออกก่อนการเพิ่ม) แล้วดำเนินการตรวจสอบความถูกต้อง

การต่อเติมเฟอร์นิเจอร์

ส่วนที่เพิ่มเข้ามาคือคำนำหน้าแฮช SHA256 ที่ควรเพิ่มลงในฐานข้อมูลในเครื่อง คำนำหน้าแฮชส่วนใหญ่มีความยาว 4 ไบต์ แต่คำนำหน้าแฮชบางชื่อมีความยาวตั้งแต่ 4 ถึง 32 ไบต์ ดังนั้น จะส่งคืนชุดที่เพิ่มได้หลายชุด เช่น ชุดหนึ่งที่มีตัวเลขนำหน้า 4 ไบต์และอีกชุดหนึ่งมีคำนำหน้า 5 ไบต์

หากไคลเอ็นต์รองรับการบีบอัด อาจมีการบีบอัดการตอบกลับโดยใช้การบีบอัด Rice แต่ระบบจะบีบอัดเฉพาะคำนำหน้าแฮชขนาด 4 ไบต์เท่านั้น ระบบจะส่งคำนำหน้าแฮชที่ยาวขึ้นเสมอในรูปแบบข้อมูลดิบที่ไม่มีการบีบอัด (ดูการบีบอัด)

การนำออก

การนำออกคือดัชนีแบบศูนย์ในฐานข้อมูลลูกค้าที่จัดเรียงแบบพจนานุกรม ซึ่งชี้ไปยังรายการที่ควรนำออกจากฐานข้อมูลภายใน ระบบจะส่งคืนการนำออกเพียงชุดเดียว

หากลูกค้ารองรับการบีบอัด ระบบจะแสดงผล "แฮชข้าว" และ "ดัชนีข้าว" หากระบบไม่รองรับการบีบอัด ระบบจะแสดง "แฮชดิบ" และ "ดัชนีดิบ" (ดูการบีบอัด)

การตรวจสอบความถูกต้อง

เมื่อแสดงผลการตอบสนองของ threatListUpdates.fetch ที่มีทั้งการอัปเดตเต็มรูปแบบหรือการอัปเดตบางส่วน ไคลเอ็นต์จะทำการตรวจสอบความถูกต้อง

ไคลเอ็นต์จะอัปเดตรายการในฐานข้อมูลของเครื่องก่อน (ใช้การนำออกก่อนการเพิ่ม) จากนั้นไคลเอ็นต์จะคำนวณแฮช SHA256 ของรายการในเครื่อง (จัดเรียงแบบพจนานุกรม) แล้วเปรียบเทียบกับผลรวมตรวจสอบที่แสดงในคำตอบ หากทั้ง 2 ค่าเท่ากัน รายการ Google Safe Browsing จะถือว่า "ถูกต้อง"

หากทั้ง 2 ค่าไม่เท่ากัน รายการ Google Safe Browsing จะถือว่า "เสียหาย" ลูกค้าต้องล้างรายการออกจากฐานข้อมูลและออกการอัปเดตครั้งที่ 2 อีกครั้งโดยที่ตั้งค่าช่อง state เป็นสตริงว่างเปล่า ซึ่งจะเป็นการบังคับการอัปเดตทั้งหมดและแสดงรายการและสถานะใหม่