Method: hashes.search

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

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

คำขอ HTTP

GET https://safebrowsing.googleapis.com/v5/hashes:search

URL ใช้ไวยากรณ์การแปลง gRPC

พารามิเตอร์การค้นหา

พารามิเตอร์
hashPrefixes[]

string (bytes format)

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

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

สตริงที่เข้ารหัส Base64

เนื้อความของคำขอ

เนื้อหาของคำขอต้องว่างเปล่า

เนื้อหาการตอบกลับ

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

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

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

หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

การแสดง JSON
{
  "fullHashes": [
    {
      object (FullHash)
    }
  ],
  "cacheDuration": string
}
ช่อง
fullHashes[]

object (FullHash)

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

cacheDuration

string (Duration format)

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

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

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

ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

FullHash

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

การแสดง JSON
{
  "fullHash": string,
  "fullHashDetails": [
    {
      object (FullHashDetail)
    }
  ]
}
ช่อง
fullHash

string (bytes format)

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

สตริงที่เข้ารหัส Base64

fullHashDetails[]

object (FullHashDetail)

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

FullHashDetail

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

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

การแสดง JSON
{
  "threatType": enum (ThreatType),
  "attributes": [
    enum (ThreatAttribute)
  ]
}
ช่อง
threatType

enum (ThreatType)

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

attributes[]

enum (ThreatAttribute)

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

ThreatAttribute

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

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