Package google.security.safebrowsing.v5alpha1

ดัชนี

SafeBrowsing

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

BatchGetHashLists

rpc BatchGetHashLists(BatchGetHashListsRequest) returns (BatchGetHashListsResponse)

รับรายการแฮชหลายรายการพร้อมกัน

ลูกค้าจําเป็นต้องได้รับรายการแฮชหลายรายการเป็นเรื่องปกติ เราขอแนะนำให้ใช้เมธอดนี้แทนการใช้เมธอด Get ปกติหลายครั้ง

นี่เป็นเมธอด Get แบบเป็นกลุ่มมาตรฐานตามที่ระบุไว้ใน https://google.aip.dev/231 และเมธอด HTTP ก็เป็น GET ด้วย

GetHashList

rpc GetHashList(GetHashListRequest) returns (HashList)

รับเนื้อหาล่าสุดของรายการแฮช รายการแฮชอาจเป็นรายการภัยคุกคามหรือรายการที่ไม่ใช่ภัยคุกคาม เช่น แคชส่วนกลาง

นี่คือเมธอด Get มาตรฐานตามที่ระบุไว้ใน https://google.aip.dev/131 และเมธอด HTTP ก็เป็น GET ด้วย

ListHashLists

rpc ListHashLists(ListHashListsRequest) returns (ListHashListsResponse)

แสดงรายการแฮช

ใน V5 API ทาง Google จะไม่นํารายการแฮชที่แสดงผลโดยเมธอดนี้ออก ซึ่งจะช่วยให้ไคลเอ็นต์ข้ามการใช้วิธีการนี้และเพียงแค่เขียนรายการแฮชทั้งหมดที่ต้องการไว้ในโค้ด

นี่คือเมธอดรายการมาตรฐานตามที่ระบุไว้ใน https://google.aip.dev/132 และเมธอด HTTP คือ GET

SearchHashes

rpc SearchHashes(SearchHashesRequest) returns (SearchHashesResponse)

ค้นหาแฮชแบบเต็มซึ่งตรงกับคำนำหน้าที่ระบุ

นี่เป็นเมธอดที่กำหนดเองตามที่ระบุไว้ใน https://google.aip.dev/136 (เมธอดที่กำหนดเองหมายถึงเมธอดนี้มีชื่อที่กำหนดเองภายในชื่อเรียกการพัฒนา API ทั่วไปของ Google ไม่ได้หมายถึงการใช้เมธอด HTTP ที่กําหนดเอง)

BatchGetHashListsRequest

คำขอรับรายการแฮชหลายรายการพร้อมกัน

ช่อง
names[]

string

ต้องระบุ ชื่อของรายการแฮชที่เฉพาะเจาะจง รายการดังกล่าวอาจเป็นรายการภัยคุกคามหรืออาจเป็นแคชส่วนกลาง ชื่อต้องไม่ซ้ำกัน มิเช่นนั้นไคลเอ็นต์จะได้รับข้อผิดพลาด

version[]

bytes

เวอร์ชันของรายการแฮชที่ไคลเอ็นต์มีอยู่แล้ว หากเป็นครั้งที่ลูกค้าดึงข้อมูลรายการแฮชเป็นครั้งแรก ก็ควรปล่อยช่องนี้ว่างไว้ มิเช่นนั้น ไคลเอ็นต์ควรระบุเวอร์ชันที่ได้รับจากเซิร์ฟเวอร์ก่อนหน้านี้ ไคลเอ็นต์ต้องไม่ดัดแปลงไบต์เหล่านั้น

ลูกค้าไม่จำเป็นต้องส่งเวอร์ชันตามลําดับเดียวกับชื่อรายการที่เกี่ยวข้อง ลูกค้าอาจส่งเวอร์ชันในคำขอน้อยกว่าหรือมากกว่าจำนวนชื่อ อย่างไรก็ตาม ลูกค้าต้องไม่ส่งหลายเวอร์ชันที่ตรงกับชื่อเดียวกัน หากส่ง ลูกค้าจะได้รับข้อผิดพลาด

หมายเหตุเกี่ยวกับประวัติ: ใน API เวอร์ชัน 4 เรียก API นี้ว่า states แต่ตอนนี้เปลี่ยนชื่อเป็น version เพื่อให้ชัดเจน

desired_hash_length
(deprecated)

HashLength

ความยาวของคำนำหน้าแฮชที่ต้องการของแฮชที่แสดงผลเป็นไบต์ จากนั้นเซิร์ฟเวอร์จะแสดงผลคำนำหน้าแฮชทั้งหมดที่มีความยาวตามที่ระบุ

รายการแฮชแต่ละรายการมีข้อกำหนดที่แตกต่างกันสำหรับค่าที่ยอมรับได้ของช่อง desired_hash_length ซึ่งดูได้ในช่อง supported_hash_lengths ใน HashListMetadata หาก desired_hash_length ไม่ได้ระบุค่าภายใน supported_hash_lengths ระบบจะแสดงข้อผิดพลาดต่อไคลเอ็นต์

สำหรับ BatchGetHashListsRequest โดยเฉพาะ ลูกค้าจะระบุ desired_hash_length ที่แตกต่างกันสำหรับรายการต่างๆ ไม่ได้ หากจําเป็นต้องทําเช่นนั้น ลูกค้าควรแยกออกเป็น BatchGetHashListsRequest หลายรายการ

size_constraints

SizeConstraints

ข้อจำกัดด้านขนาดของรายการแต่ละรายการ หากไม่ระบุ ระบบจะไม่มีข้อจำกัด โปรดทราบว่าขนาดที่นี่จะแสดงต่อรายการ ไม่ใช่รวมจากทุกรายการ

BatchGetHashListsResponse

การตอบกลับที่มีรายการแฮชหลายรายการ

ช่อง
hash_lists[]

HashList

รายการแฮชตามลําดับเดียวกับที่ระบุไว้ในคําขอ

FullHash

แฮชแบบเต็มที่มีการจับคู่อย่างน้อย 1 รายการ

ช่อง
full_hash

bytes

แฮชแบบเต็มที่ตรงกัน เงื่อนไขนี้คือแฮช SHA256 ความยาวจะเป็น 32 ไบต์

full_hash_details[]

FullHashDetail

รายการที่ไม่เรียงลําดับ ช่องซ้ำที่ระบุรายละเอียดที่เกี่ยวข้องกับแฮชแบบเต็มนี้

FullHashDetail

รายละเอียดเกี่ยวกับแฮชแบบเต็มที่ตรงกัน

หมายเหตุสำคัญเกี่ยวกับการเข้ากันได้แบบย้อนหลัง: เซิร์ฟเวอร์อาจเพิ่มประเภทภัยคุกคามและแอตทริบิวต์ภัยคุกคามใหม่ได้ทุกเมื่อ ซึ่งถือว่าเป็นการเปลี่ยนแปลงเวอร์ชันเล็กน้อย นโยบายของ Google คือไม่แสดงหมายเลขเวอร์ชันย่อยใน API (ดูนโยบายการระบุเวอร์ชันได้ที่ https://cloud.google.com/apis/design/versioning) ดังนั้นไคลเอ็นต์จึงต้องเตรียมพร้อมที่จะรับข้อความ FullHashDetail ที่มีค่า ThreatType enum หรือค่า ThreatAttribute enum ที่ไคลเอ็นต์ถือว่าไม่ถูกต้อง ดังนั้น ไคลเอ็นต์มีหน้าที่ตรวจสอบความถูกต้องของค่า ThreatType และ ThreatAttribute ทั้งหมด หากค่าใดถือว่าไม่ถูกต้อง ไคลเอ็นต์ต้องไม่สนใจข้อความ FullHashDetail ทั้งหมด

ช่อง
threat_type

ThreatType

ประเภทของภัยคุกคาม ช่องนี้จะไม่มีวันว่างเปล่า

attributes[]

ThreatAttribute

รายการที่ไม่เรียงลําดับ แอตทริบิวต์เพิ่มเติมเกี่ยวกับแฮชแบบเต็มเหล่านั้น ช่องนี้อาจว่างเปล่า

GetHashListRequest

คำขอรับรายการแฮช ซึ่งอาจเป็นรายการภัยคุกคามหรือรายการที่ไม่ใช่ภัยคุกคาม เช่น แคชส่วนกลาง

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

ช่อง
name

string

ต้องระบุ ชื่อของรายการแฮชนี้ ซึ่งอาจเป็นรายการภัยคุกคามหรือแคชส่วนกลางก็ได้

version

bytes

เวอร์ชันของรายการแฮชที่ไคลเอ็นต์มีอยู่แล้ว หากเป็นครั้งที่ลูกค้าดึงข้อมูลรายการแฮชเป็นครั้งแรก ช่องนี้ต้องว่างเปล่า ไม่เช่นนั้นไคลเอ็นต์ควรระบุเวอร์ชันที่ได้รับจากเซิร์ฟเวอร์ก่อนหน้านี้ ไคลเอ็นต์ต้องไม่ดัดแปลงไบต์เหล่านั้น

มีอะไรใหม่ในเวอร์ชัน 5: ใน API เวอร์ชัน 4 ฟีเจอร์นี้เรียกว่า states แต่ตอนนี้เปลี่ยนชื่อเป็น version เพื่อให้ชัดเจน

desired_hash_length
(deprecated)

HashLength

ความยาวของคำนำหน้าแฮชที่ต้องการของแฮชที่แสดงผลเป็นไบต์ จากนั้นเซิร์ฟเวอร์จะแสดงผลคำนำหน้าแฮชทั้งหมดที่มีความยาวตามที่ระบุ

รายการแฮชแต่ละรายการมีข้อกำหนดที่แตกต่างกันสำหรับค่าที่ยอมรับได้ของช่อง desired_hash_length ซึ่งดูได้ในช่อง supported_hash_lengths ใน HashListMetadata หาก desired_hash_length ไม่ได้ระบุค่าภายใน supported_hash_lengths ระบบจะแสดงข้อผิดพลาด

size_constraints

SizeConstraints

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

HashList

รายการแฮชที่ระบุด้วยชื่อ

ช่อง
name

string

ชื่อรายการแฮช โปรดทราบว่าแคชส่วนกลางก็เป็นเพียงรายการแฮชเช่นกันและสามารถอ้างอิงได้ที่นี่

version

bytes

เวอร์ชันของรายการแฮช ไคลเอ็นต์ต้องไม่ดัดแปลงไบต์เหล่านั้น

partial_update

bool

เมื่อเป็น "จริง" แสดงว่านี่คือความแตกต่างบางส่วนที่มีการเพิ่มและการนําออกโดยอิงตามสิ่งที่ไคลเอ็นต์มีอยู่แล้ว เมื่อเป็นเท็จ รายการนี้จะแสดงแฮชทั้งหมด

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

เมื่อเป็นจริง ไคลเอ็นต์ต้องใช้การอัปเดตแบบเพิ่มทีละรายการโดยนำออกก่อนแล้วจึงเพิ่ม

compressed_removals

RiceDeltaEncoded32Bit

ดัชนีการนําออกเวอร์ชันที่เข้ารหัส Rice-delta เนื่องจากรายการแฮชแต่ละรายการมีรายการน้อยกว่า 2^32 รายการ ระบบจึงถือว่าอินเด็กซ์เป็นจำนวนเต็ม 32 บิตและเข้ารหัส

minimum_wait_duration

Duration

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

sha256_checksum

bytes

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

metadata

HashListMetadata

ข้อมูลเมตาเกี่ยวกับรายการแฮช ข้อมูลนี้ไม่ได้สร้างขึ้นโดยวิธีการ GetHashList แต่สร้างขึ้นโดยวิธีการ ListHashLists

ฟิลด์สหภาพ compressed_additions เวอร์ชันที่มีการเพิ่มที่โค้ดด้วย Rice-delta ความยาวของคำนำหน้าแฮชของรายการที่เพิ่มจะเหมือนกันสำหรับรายการที่เพิ่มทั้งหมดในรายการ โดยอาจเป็น desired_hash_length ที่ส่งโดยไคลเอ็นต์หรือค่าที่เซิร์ฟเวอร์เลือกไว้หากไคลเอ็นต์ละเว้นช่องนั้น compressed_additions ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
additions_four_bytes

RiceDeltaEncoded32Bit

การเพิ่ม 4 ไบต์

additions_eight_bytes

RiceDeltaEncoded64Bit

การเพิ่ม 8 ไบต์

additions_sixteen_bytes

RiceDeltaEncoded128Bit

การเพิ่ม 16 ไบต์

additions_thirty_two_bytes

RiceDeltaEncoded256Bit

การเพิ่ม 32 ไบต์

HashListMetadata

ข้อมูลเมตาเกี่ยวกับรายการแฮชที่เฉพาะเจาะจง

ช่อง
threat_types[]

ThreatType

รายการที่ไม่เรียงลําดับ หากไม่ใช่ค่าว่าง ข้อมูลนี้จะระบุว่ารายการแฮชเป็นรายการภัยคุกคามประเภทหนึ่ง และจะแสดงรายการภัยคุกคามประเภทต่างๆ ที่เชื่อมโยงกับแฮชหรือคำนำหน้าแฮชในรายการแฮชนี้ อาจเป็นค่าว่างได้หากรายการไม่ได้แสดงถึงภัยคุกคาม เช่น ในกรณีที่รายการแสดงถึงประเภทที่น่าจะปลอดภัย

likely_safe_types[]

LikelySafeType

รายการที่ไม่เรียงลําดับ หากไม่ว่างเปล่า รายการนี้จะระบุว่ารายการแฮชแสดงรายการแฮชที่น่าจะปลอดภัย และรายการนี้จะแสดงวิธีต่างๆ ที่ถือว่าแฮชดังกล่าวน่าจะปลอดภัย ช่องนี้ใช้ร่วมกับช่อง threat_types ไม่ได้

description

string

คำอธิบายที่มนุษย์อ่านได้เกี่ยวกับรายการนี้ เขียนเป็นภาษาอังกฤษ

supported_hash_lengths[]
(deprecated)

HashLength

ความยาวแฮชที่รองรับสำหรับรายการแฮชนี้ รายการแฮชแต่ละรายการจะรองรับความยาวอย่างน้อย 1 รายการ ดังนั้นช่องนี้จึงจะไม่ว่างเปล่า

hash_length

HashLength

ความยาวแฮชที่รองรับสำหรับรายการแฮชนี้ รายการแฮชแต่ละรายการจะรองรับความยาวเพียงรายการเดียว หากมีการเพิ่มความยาวแฮชที่ต่างกันสำหรับชุดประเภทภัยคุกคามหรือประเภทที่ปลอดภัยเดียวกัน ระบบจะแสดงเป็นรายการแยกต่างหากที่มีชื่อและชุดความยาวแฮชที่แตกต่างกัน

HashLength

ความยาวของแฮชในรายการแฮช

Enum
HASH_LENGTH_UNSPECIFIED ความยาวที่ไม่ได้ระบุ เซิร์ฟเวอร์จะไม่แสดงค่านี้ในการตอบกลับไคลเอ็นต์ (ในช่อง supported_hash_lengths) แต่อนุญาตให้ไคลเอ็นต์ส่งค่านี้ไปยังเซิร์ฟเวอร์ (ในช่อง desired_hash_length) ซึ่งในกรณีนี้เซิร์ฟเวอร์จะเลือกค่าให้โดยอัตโนมัติ ไคลเอ็นต์ควรปล่อยให้เซิร์ฟเวอร์เลือกค่า
FOUR_BYTES แฮชแต่ละรายการคือคำนำหน้า 4 ไบต์
EIGHT_BYTES แฮชแต่ละรายการคือคำนำหน้า 8 ไบต์
SIXTEEN_BYTES แฮชแต่ละรายการคือคำนำหน้า 16 ไบต์
THIRTY_TWO_BYTES แฮชแต่ละรายการเป็นแฮชแบบเต็ม 32 ไบต์

LikelySafeType

ประเภทของเว็บไซต์ที่น่าจะปลอดภัย

โปรดทราบว่า SearchHashesResponse ไม่มี LikelySafeType โดยเจตนา

Enum
LIKELY_SAFE_TYPE_UNSPECIFIED ไม่รู้จัก
GENERAL_BROWSING เว็บไซต์นี้น่าจะปลอดภัยเพียงพอสำหรับการท่องเว็บทั่วไป หรือที่เรียกว่าแคชส่วนกลาง
CSD เว็บไซต์นี้น่าจะปลอดภัยเพียงพอที่จะไม่ต้องเรียกใช้โมเดลการตรวจจับฝั่งไคลเอ็นต์หรือการตรวจสอบการป้องกันด้วยรหัสผ่าน
DOWNLOAD เว็บไซต์นี้น่าจะปลอดภัยพอที่จะไม่ต้องตรวจสอบการดาวน์โหลดจากเว็บไซต์

ListHashListsRequest

คำขอแสดงรายการแฮชที่ใช้ได้

ช่อง
page_size

int32

จำนวนรายการแฮชสูงสุดที่จะแสดง บริการอาจแสดงผลน้อยกว่าค่านี้ หากไม่ระบุ เซิร์ฟเวอร์จะเลือกขนาดหน้า ซึ่งอาจใหญ่กว่าจํานวนรายการแฮชเพื่อไม่ให้ต้องมีการแบ่งหน้า

page_token

string

โทเค็นหน้าเว็บที่ได้รับจากการเรียกใช้ ListHashLists ก่อนหน้านี้ ระบุข้อมูลนี้เพื่อเรียกข้อมูลหน้าถัดไป

ListHashListsResponse

การตอบกลับที่มีข้อมูลเมตาเกี่ยวกับรายการแฮช

ช่อง
hash_lists[]

HashList

รายการแฮชจะแสดงตามลำดับที่กำหนด ระบบจะรวมเฉพาะข้อมูลเมตาเกี่ยวกับรายการแฮชเท่านั้น โดยจะไม่รวมเนื้อหา

next_page_token

string

โทเค็น ซึ่งสามารถส่งเป็น page_token เพื่อเรียกข้อมูลหน้าถัดไป หากละเว้นช่องนี้ จะไม่มีหน้าถัดไป

RiceDeltaEncoded128Bit

เหมือนกับ RiceDeltaEncoded32Bit ยกเว้นว่ารูปแบบนี้จะเข้ารหัสตัวเลข 128 บิต

ช่อง
first_value_hi

uint64

64 บิตบนของรายการแรกในข้อมูลที่เข้ารหัส (แฮช) หากช่องว่างเปล่า บิต 64 บิตบนจะเป็น 0 ทั้งหมด

first_value_lo

fixed64

64 บิตล่างของรายการแรกในข้อมูลที่เข้ารหัส (แฮช) หากช่องว่างเปล่า 64 บิตที่ต่ำกว่าจะเป็น 0 ทั้งหมด

rice_parameter

int32

พารามิเตอร์ Golomb-Rice พารามิเตอร์นี้ต้องอยู่ในช่วง 99 ถึง 126 โดยรวม

entries_count

int32

จํานวนรายการที่เข้ารหัส Delta ในข้อมูลที่เข้ารหัส หากมีการเข้ารหัสจำนวนเต็มที่เดียว ค่านี้จะเท่ากับ 0 และระบบจะจัดเก็บค่าเดียวใน first_value

encoded_data

bytes

เดลต้าที่เข้ารหัสซึ่งเข้ารหัสโดยใช้โปรแกรมเข้ารหัส Golomb-Rice

RiceDeltaEncoded256Bit

เหมือนกับ RiceDeltaEncoded32Bit ยกเว้นว่าค่านี้เข้ารหัสตัวเลข 256 บิต

ช่อง
first_value_first_part

uint64

64 บิตแรกของรายการแรกในข้อมูลที่เข้ารหัส (แฮช) หากช่องว่างเปล่า 64 บิตแรกจะเป็น 0 ทั้งหมด

first_value_second_part

fixed64

บิตที่ 65 ถึง 128 ของรายการแรกในข้อมูลที่เข้ารหัส (แฮช) หากช่องว่างเปล่า บิตที่ 65 ถึง 128 จะเป็น 0 ทั้งหมด

first_value_third_part

fixed64

บิตที่ 129 ถึง 192 ของรายการแรกในข้อมูลที่เข้ารหัส (แฮช) หากช่องว่างเปล่า บิตที่ 129 ถึง 192 จะเป็น 0 ทั้งหมด

first_value_fourth_part

fixed64

64 บิตสุดท้ายของรายการแรกในข้อมูลที่เข้ารหัส (แฮช) หากช่องว่างเปล่า 64 บิตสุดท้ายจะเป็น 0 ทั้งหมด

rice_parameter

int32

พารามิเตอร์ Golomb-Rice พารามิเตอร์นี้ต้องอยู่ระหว่าง 227 ถึง 254 (รวมค่าแรกและค่าสุดท้าย)

entries_count

int32

จํานวนรายการที่เข้ารหัส Delta ในข้อมูลที่เข้ารหัส หากมีการเข้ารหัสจำนวนเต็มที่เดียว ค่านี้จะเท่ากับ 0 และระบบจะจัดเก็บค่าเดียวใน first_value

encoded_data

bytes

เดลต้าที่เข้ารหัสซึ่งเข้ารหัสโดยใช้โปรแกรมเข้ารหัส Golomb-Rice

RiceDeltaEncoded32Bit

ข้อมูลที่เข้ารหัสด้วย Rice-Golomb ใช้สำหรับแฮชหรือดัชนีการนำออก เรารับประกันว่าแฮชหรือดัชนีทุกรายการที่นี่จะมีความยาวเท่ากัน และความยาวนี้คือ 32 บิต

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

หมายเหตุเกี่ยวกับประวัติ: การเข้ารหัส Rice-delta นี้เริ่มใช้ใน API เวอร์ชัน 4 ในเวอร์ชัน 5 มีการปรับปรุงที่สำคัญ 2 อย่าง ประการแรก ตอนนี้การเข้ารหัส Rice-delta พร้อมใช้งานกับคำนำหน้าแฮชที่ยาวกว่า 4 ไบต์แล้ว ประการที่ 2 ตอนนี้ระบบจะถือว่าข้อมูลที่เข้ารหัสเป็น Big-endian เพื่อหลีกเลี่ยงขั้นตอนการจัดเรียงที่เสียค่าใช้จ่าย

ช่อง
first_value

uint32

รายการแรกในข้อมูลที่เข้ารหัส (แฮชหรือดัชนี) หรือค่าของรายการนั้น หากมีการเข้ารหัสเฉพาะคำนำหน้าหรือดัชนีแฮชรายการเดียว หากช่องว่างเปล่า รายการจะเป็น 0

rice_parameter

int32

พารามิเตอร์ Golomb-Rice พารามิเตอร์นี้ต้องอยู่ระหว่าง 3 ถึง 30

entries_count

int32

จํานวนรายการที่เข้ารหัส Delta ในข้อมูลที่เข้ารหัส หากมีการเข้ารหัสจำนวนเต็มที่เดียว ค่านี้จะเท่ากับ 0 และระบบจะจัดเก็บค่าเดียวใน first_value

encoded_data

bytes

เดลต้าที่เข้ารหัสซึ่งเข้ารหัสโดยใช้โปรแกรมเข้ารหัส Golomb-Rice

RiceDeltaEncoded64Bit

เหมือนกับ RiceDeltaEncoded32Bit ยกเว้นว่ารูปแบบนี้จะเข้ารหัสตัวเลข 64 บิต

ช่อง
first_value

uint64

รายการแรกในข้อมูลที่เข้ารหัส (แฮช) หรือค่าของรายการนั้นหากมีการเข้ารหัสเฉพาะคำนำหน้าแฮชรายการเดียว หากช่องว่างเปล่า รายการจะเป็น 0

rice_parameter

int32

พารามิเตอร์ Golomb-Rice พารามิเตอร์นี้ต้องอยู่ระหว่าง 35 ถึง 62

entries_count

int32

จํานวนรายการที่เข้ารหัส Delta ในข้อมูลที่เข้ารหัส หากมีการเข้ารหัสจำนวนเต็มที่เดียว ค่านี้จะเท่ากับ 0 และระบบจะจัดเก็บค่าเดียวใน first_value

encoded_data

bytes

เดลต้าที่เข้ารหัสซึ่งเข้ารหัสโดยใช้โปรแกรมเข้ารหัส Golomb-Rice

SearchHashesRequest

คำขอที่ไคลเอ็นต์ส่งเพื่อค้นหาคำนำหน้าแฮชที่เฉพาะเจาะจง

ซึ่งออกแบบมาเพื่อค้นหาเฉพาะรายการภัยคุกคาม และไม่ค้นหารายการที่ไม่ใช่ภัยคุกคาม เช่น แคชส่วนกลาง

สิ่งที่ใหม่ใน V5: ลูกค้าไม่จําเป็นต้องระบุ ClientInfo หรือสถานะของรายการแฮชในฐานข้อมูลในเครื่อง การดำเนินการนี้มีไว้เพื่อความเป็นส่วนตัวที่ดียิ่งขึ้น นอกจากนี้ ลูกค้าไม่จําเป็นต้องส่งประเภทภัยคุกคามที่สนใจ

ช่อง
hash_prefixes[]

bytes

ต้องระบุ คำนำหน้าแฮชที่จะค้นหา ลูกค้าต้องไม่ส่งคำนำหน้าแฮชเกิน 1,000 รายการ อย่างไรก็ตาม ไคลเอ็นต์ไม่ควรส่งคำนำหน้าแฮชเกิน 30 รายการตามขั้นตอนการประมวลผล URL

ปัจจุบันคำนำหน้าแฮชแต่ละรายการต้องมีความยาว 4 ไบต์พอดี ซึ่งอาจผ่อนปรนในอนาคต

filter

string

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

ตัวกรองจะระบุโดยใช้ Common Expression Language ของ Google ซึ่งมีอยู่ที่นี่ https://github.com/google/cel-spec พร้อมด้วยตัวอย่างทั่วไป ตัวอย่างที่เฉพาะเจาะจงบางส่วนที่ใช้ได้มีดังนี้

ตัวกรอง "threat_type == ThreatType.SOCIAL_ENGINEERING" กําหนดให้ภายใน FullHashDetail ประเภทภัยคุกคามต้องเป็น SOCIAL_ENGINEERING ตัวระบุ "threat_type" หมายถึงประเภทภัยคุกคามปัจจุบัน ตัวระบุ "ThreatType" หมายถึงคอลเล็กชันภัยคุกคามประเภทต่างๆ ที่เป็นไปได้ทั้งหมด

ตัวกรอง "threat_type in [ ThreatType.UNWANTED_SOFTWARE, ThreatType.MALWARE ]" กำหนดให้ประเภทภัยคุกคามต้องเป็น UNWANTED_SOFTWARE หรือ MALWARE

SearchHashesResponse

การตอบกลับที่แสดงหลังจากค้นหาแฮชของภัยคุกคาม

หากไม่พบรายการใดเลย เซิร์ฟเวอร์จะแสดงสถานะ "OK" (รหัสสถานะ HTTP 200) โดยที่ช่อง full_hashes ว่างเปล่า แทนที่จะแสดงสถานะ NOT_FOUND (รหัสสถานะ HTTP 404)

มีอะไรใหม่ใน V5: มีเส้นแบ่งระหว่าง FullHash กับ FullHashDetail ในกรณีที่แฮชแสดงถึงเว็บไซต์ที่มีภัยคุกคามหลายรายการ (เช่น ทั้ง MALWARE และ SOCIAL_ENGINEERING) ก็ไม่จำเป็นต้องส่งแฮชแบบเต็ม 2 ครั้งเหมือนใน V4 นอกจากนี้ เราได้ลดความซับซ้อนของระยะเวลาแคชให้เหลือเพียงช่อง cache_duration ช่องเดียว

ช่อง
full_hashes[]

FullHash

รายการที่ไม่เรียงลําดับ รายการแฮชแบบไม่เรียงลำดับที่พบ

cache_duration

Duration

ระยะเวลาของแคชฝั่งไคลเอ็นต์ โดยลูกค้าต้องเพิ่มระยะเวลานี้ลงในเวลาปัจจุบันเพื่อระบุเวลาหมดอายุ จากนั้นเวลาหมดอายุจะมีผลกับคำนำหน้าแฮชทั้งหมดที่ไคลเอ็นต์ค้นหาในคำขอ ไม่ว่าจะมีการแสดงแฮชแบบเต็มกี่รายการในการตอบกลับ แม้ว่าเซิร์ฟเวอร์จะไม่แสดงแฮชแบบเต็มสําหรับคำนำหน้าแฮชที่เฉพาะเจาะจง แต่ไคลเอ็นต์ต้องแคชข้อมูลนี้ด้วย

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

สำคัญ: ลูกค้าต้องไม่ถือว่าเซิร์ฟเวอร์จะแสดงระยะเวลาแคชเดียวกันสำหรับการตอบกลับทั้งหมด เซิร์ฟเวอร์อาจเลือกระยะเวลาแคชที่แตกต่างกันสำหรับการตอบกลับแต่ละรายการ ทั้งนี้ขึ้นอยู่กับสถานการณ์

SizeConstraints

ข้อจำกัดเกี่ยวกับขนาดของรายการแฮช

ช่อง
max_update_entries

int32

จํานวนรายการสูงสุด การอัปเดตจะมีรายการไม่เกินค่านี้ แต่อาจมีการอัปเดตที่มีรายการน้อยกว่าค่านี้ ค่านี้ต้องมีอย่างน้อย 1,024 หากไม่ระบุหรือเป็น 0 ระบบจะไม่จำกัดขนาดการอัปเดต

max_database_entries

int32

กำหนดจำนวนรายการสูงสุดที่ไคลเอ็นต์ต้องการให้มีในฐานข้อมูลในเครื่องสำหรับรายการ (เซิร์ฟเวอร์อาจทําให้ไคลเอ็นต์จัดเก็บรายการน้อยกว่าจํานวนนี้) หากไม่ระบุหรือเป็น 0 ระบบจะไม่จำกัดขนาดฐานข้อมูล

ThreatAttribute

แอตทริบิวต์ของภัยคุกคาม แอตทริบิวต์เหล่านี้อาจให้ความหมายเพิ่มเติมแก่ภัยคุกคามหนึ่งๆ แต่ไม่ส่งผลต่อประเภทภัยคุกคาม เช่น แอตทริบิวต์หนึ่งอาจระบุความเชื่อมั่นที่ต่ำลง ขณะที่แอตทริบิวต์อื่นอาจระบุความเชื่อมั่นที่สูงกว่า ทั้งนี้อาจมีการเพิ่มแอตทริบิวต์อื่นๆ ในอนาคต

Enum
THREAT_ATTRIBUTE_UNSPECIFIED แอตทริบิวต์ที่ไม่รู้จัก หากเซิร์ฟเวอร์แสดงผลค่านี้ ไคลเอ็นต์จะไม่สนใจ FullHashDetail ที่แนบมาโดยสิ้นเชิง
CANARY ระบุว่าไม่ควรใช้ threat_type เพื่อบังคับใช้
FRAME_ONLY ระบุว่าควรใช้ threat_type กับการบังคับใช้ในเฟรมเท่านั้น

ThreatType

ประเภทของภัยคุกคาม

Enum
THREAT_TYPE_UNSPECIFIED ประเภทภัยคุกคามที่ไม่รู้จัก หากเซิร์ฟเวอร์แสดงผลค่านี้ ไคลเอ็นต์จะไม่สนใจ FullHashDetail ที่แนบมาโดยสิ้นเชิง
MALWARE

ประเภทภัยคุกคามจากมัลแวร์ มัลแวร์คือซอฟต์แวร์หรือแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ใดๆ ก็ตามที่ออกแบบมาเพื่อสร้างความเสียหายแก่คอมพิวเตอร์ อุปกรณ์เคลื่อนที่ ซอฟต์แวร์ที่ทำงานอยู่ หรือผู้ใช้ซอฟต์แวร์นั้นๆ มัลแวร์มีลักษณะการทำงานที่เป็นอันตราย ซึ่งอาจรวมถึงการติดตั้งซอฟต์แวร์โดยไม่ได้รับคำยินยอมจากผู้ใช้ และการติดตั้งซอฟต์แวร์ที่เป็นอันตรายอย่างเช่น ไวรัส

ดูข้อมูลเพิ่มเติมได้ที่นี่

SOCIAL_ENGINEERING

ประเภทภัยคุกคามจากวิศวกรรมสังคม หน้าวิศวกรรมสังคมแอบอ้างว่าดำเนินการในนามของบุคคลที่สาม โดยมีเจตนาทำให้ผู้ชมสับสนและดำเนินการในลักษณะที่ผู้ชมจะไว้วางใจเฉพาะตัวแทนที่แท้จริงของบุคคลที่สามรายนั้น ฟิชชิงเป็นวิศวกรรมสังคมประเภทหนึ่งที่หลอกลวงผู้ชมให้ดำเนินการบางอย่าง เช่น การให้ข้อมูล เช่น ข้อมูลเข้าสู่ระบบ

ดูข้อมูลเพิ่มเติมได้ที่นี่

UNWANTED_SOFTWARE ประเภทภัยคุกคามซอฟต์แวร์ไม่พึงประสงค์ ซอฟต์แวร์ไม่พึงประสงค์คือซอฟต์แวร์ที่ไม่เป็นไปตามหลักเกณฑ์ด้านซอฟต์แวร์ของ Google แต่ไม่ใช่มัลแวร์
POTENTIALLY_HARMFUL_APPLICATION ประเภทภัยคุกคามแอปพลิเคชันที่อาจเป็นอันตราย ตามที่ Google Play Protect ใช้สำหรับ Play Store