Package google.security.safebrowsing.v5alpha1

索引

SafeBrowsing

Safe Browsing API 可讓用戶端根據 Google 持續更新的不安全網頁資源清單,檢查網路資源 (最常見的網址)。

BatchGetHashLists

rpc BatchGetHashLists(BatchGetHashListsRequest) returns (BatchGetHashListsResponse)

一次取得多份雜湊清單。

客戶經常需要取得多份雜湊清單,相較於使用一般的 Get 方法,我們較建議採用此方法多次。

這是標準批次 Get 方法 (由 https://google.aip.dev/231 定義),且 HTTP 方法也是 GET。

GetHashList

rpc GetHashList(GetHashListRequest) returns (HashList)

取得雜湊清單的最新內容。雜湊清單可能是威脅清單或非威脅清單,例如全域快取。

這是由 https://google.aip.dev/131 定義的標準 Get 方法,且 HTTP 方法也是 GET。

ListHashLists

rpc ListHashLists(ListHashListsRequest) returns (ListHashListsResponse)

列出雜湊清單。

在 V5 API 中,Google 絕不會移除此方法所傳回的雜湊清單。這可讓用戶端略過此方法,直接對需要的所有雜湊清單進行硬式編碼。

這是由 https://google.aip.dev/132 定義的標準 List 方法,而 HTTP 方法為 GET。

SearchHashes

rpc SearchHashes(SearchHashesRequest) returns (SearchHashesResponse)

搜尋符合指定前置字串的完整雜湊。

這是由 https://google.aip.dev/136 定義的自訂方法 (自訂方法是指在 Google 一般 API 開發命名法中具有自訂名稱的方法;這並不是指使用自訂 HTTP 方法)。

BatchGetHashListsRequest

要求同時取得多個雜湊清單的要求。

欄位
names[]

string

必要欄位。特定雜湊清單的名稱。該清單「可能」為威脅清單,或可能是「全域快取」。名稱「不得」包含重複項目;如果名稱重複,用戶端就會收到錯誤訊息。

version[]

bytes

用戶端現有的雜湊清單版本。如果這是用戶端首次擷取雜湊清單,該欄位應留空。否則,用戶端應提供先前從伺服器接收的版本。用戶端「不得」操控這些位元組。

用戶端不需要依照對應清單名稱的順序傳送版本。用戶端所傳送的要求中可能少於或更多的版本。然而,用戶端「不得」傳送多個名稱相同的版本;如果包含相同名稱,用戶端就會收到錯誤訊息。

記錄附註:在 API 的 V4 中,這個項目稱為 states,為清楚起見,現在改名為 version

desired_hash_length

HashLength

傳回雜湊的所需雜湊前置字元長度 (以位元組為單位)。伺服器就會傳回符合指定長度的所有雜湊前置字串。

各種雜湊清單對 desired_hash_length 欄位可接受的值設有不同的規定。您可以在 HashListMetadatasupported_hash_lengths 欄位找到這項資訊。如果 desired_hash_length 沒有在 supported_hash_lengths 內指定值,用戶端就會傳回錯誤。

特別是 BatchGetHashListsRequest,用戶端無法為不同清單指定不同的 desired_hash_length。如果需要執行這項操作,用戶端應分割成多個 BatchGetHashListsRequest

size_constraints

SizeConstraints

每份清單的大小限制。如果省略,就不會有限制。請注意,這裡顯示的尺寸是單一清單,並未匯總所有清單的資料。

BatchGetHashListsResponse

包含多份雜湊清單的回應。

欄位
hash_lists[]

HashList

雜湊清單的順序與要求中的指定順序相同。

FullHash

識別出一或多個相符項目的完整雜湊。

欄位
full_hash

bytes

相符的完整雜湊。這是 SHA256 雜湊。長度為 32 個位元組。

full_hash_details[]

FullHashDetail

未排序的清單。重複欄位,用於識別與這個完整雜湊相關的詳細資料。

FullHashDetail

比對完整雜湊的詳細資料。

前瞻相容性的重要須知:伺服器隨時可能加入新的威脅類型和威脅屬性;這些新增項目被視為小版本變更。根據 Google 的政策規定,Google 政策不得在 API 中公開次要版本號碼 (請參閱 https://cloud.google.com/apis/design/versioning 的說明,參閱版本管理政策的說明),因此用戶端必須準備好接收含有 ThreatType 列舉值或 ThreatAttribute 列舉值的 FullHashDetail 訊息,系統會將用戶端視為無效。因此,用戶端有責任檢查所有 ThreatTypeThreatAttribute 列舉值是否有效。如果有任何值視為無效,用戶端就「必須」忽略整個 FullHashDetail 訊息。

欄位
threat_type

ThreatType

威脅類型。這個欄位永遠不會空白。

attributes[]

ThreatAttribute

未排序的清單。完整雜湊的其他屬性。可能為空白。

GetHashListRequest

要求取得雜湊清單的要求;雜湊清單可為威脅清單或非威脅清單,例如全域快取。

V5 新功能:為求明確,V4 中先前稱為 states 的 API 已重新命名為 version。清單現已命名,平台類型和威脅項目類型已移除。目前無法讓多份清單有相同的威脅類型,或一份關注多種威脅類型的單一清單。用戶端可獲得指定所需雜湊長度的新功能。這是 V4 可變長度雜湊前置字串解答的一環,主要是發生在許多用戶端實作中,這是因為清單中的所有雜湊現在都只有單一長度,因此能更有效率地實作用戶端導入作業。限制已經過簡化,並移除了壓縮類型 (一律會套用壓縮)。

欄位
name

string

必要欄位。此特定雜湊清單的名稱。這可能是威脅清單,也可能是全域快取。

version

bytes

用戶端現有的雜湊清單版本。如果這是用戶端第一次擷取雜湊清單,這個欄位必須留空。否則,用戶端「必須」提供先前從伺服器接收到的版本。用戶端「不得」操控這些位元組。

第 5 版新功能:在 API 的第 4 版中,此功能稱為 states;為清楚起見,此名稱現已重新命名為 version

desired_hash_length

HashLength

傳回雜湊的所需雜湊前置字元長度 (以位元組為單位)。伺服器就會傳回符合指定長度的所有雜湊前置字串。

各種雜湊清單對 desired_hash_length 欄位可接受的值設有不同的規定。您可以在 HashListMetadatasupported_hash_lengths 欄位找到這項資訊。如果 desired_hash_length 沒有在 supported_hash_lengths 內指定值,系統會傳回錯誤。

size_constraints

SizeConstraints

清單的大小限制。如果省略,就不會有限制。我們建議在所有具備處理能力、頻寬或儲存空間有限的裝置上皆使用限制條件。

HashList

以名稱識別的雜湊清單。

欄位
name

string

雜湊清單的名稱。請注意,全域快取也只是雜湊清單,也可以在這裡指稱。

version

bytes

雜湊清單的版本。用戶端「不得」操控這些位元組。

partial_update

bool

如果為 true,這是部分差異,包含根據用戶端現有項目新增和移除的項目。如果為 false,則表示完整的雜湊清單。

如果為 false,用戶端「必須」刪除這份雜湊清單所需的任何本機儲存版本。這表示用戶端所擁有的版本已嚴重過時,或系統認為用戶端資料已毀損。compressed_removals 欄位會留空。

為 true 時,用戶端必須套用累加原則再套用更新。

compressed_removals

RiceDeltaEncoded32Bit

移除索引的 Rice-delta 編碼版本。由於每個雜湊清單肯定少於 2^32 個項目,因此系統會將索引視為 32 位元整數並進行編碼。

minimum_wait_duration

Duration

用戶端至少應等候這段時間,才能再次取得雜湊清單。如果省略或為 0,用戶端「應該」立即擷取,因為指出伺服器有其他更新要傳送至用戶端,但因為用戶端指定的限制條件而無法傳送。

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 位元組新增項目。

聯集欄位 checksum。這是套用提供的更新後,資料庫中所有雜湊的已排序清單總和檢查碼。這是「oneof」欄位,可讓系統接受多個雜湊演算法。伺服器也可能省略這個欄位 (在未提供更新的情況下),指出用戶端應使用現有的總和檢查碼。checksum 只能是下列其中一項:
sha256_checksum

bytes

所有雜湊的排序清單,並使用 SHA256 再次進行雜湊處理。

HashListMetadata

特定雜湊清單的相關中繼資料。

欄位
threat_types[]

ThreatType

未排序的清單。如果不是空白,就會指定雜湊清單是一種威脅清單,而此雜湊會列出與雜湊或雜湊前置字串相關的威脅類型。如果該項目不代表威脅,則為空白;也就是說,該項目代表可能安全無虞的類型。

likely_safe_types[]

LikelySafeType

未排序的清單。如果不是空白,就會指定雜湊清單代表一份可能的安全雜湊清單,並列舉這些雜湊可能安全無虞的方法。這個欄位與 Threat_types 欄位互斥。

mobile_optimized

bool

這份清單是否針對行動裝置 (Android 和 iOS) 進行最佳化。

description

string

這份清單的清楚易懂說明。以英文書寫。

supported_hash_lengths[]

HashLength

此雜湊清單支援的雜湊長度。每個雜湊清單至少支援一個長度。所以這個欄位不會空白。

HashLength

雜湊清單中的雜湊長度。

列舉
HASH_LENGTH_UNSPECIFIED 未指定長度。伺服器不會在回應用戶端時傳回這個值 (在 supported_hash_lengths 欄位),但用戶端可以將這個值傳送至伺服器 (位於 desired_hash_length 欄位),在此情況下,伺服器會自動挑選一個值。用戶端「應」讓伺服器選擇值。
FOUR_BYTES 每個雜湊均為四位元組的前置字串。
EIGHT_BYTES 每個雜湊均為八位元組的前置字串。
SIXTEEN_BYTES 每個雜湊均為十六個位元組的前置字串。
THIRTY_TWO_BYTES 每個雜湊均為 32 個位元組的完整雜湊。

LikelySafeType

可能安全網站類型。

請注意,SearchHashesResponse 刻意不含 LikelySafeType

列舉
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 位元全為零。

first_value_lo

fixed64

編碼資料中第一個項目 (雜湊) 的下限 (64 位元)。如果這個欄位留空,64 位元就會是零。

rice_parameter

int32

Golomb-Rice 參數。這個參數保證介於 99 到 126 (含) 之間。

entries_count

int32

已編碼資料中經過差異處理的項目數量。如果只編碼了一個整數,這個值將會是零,而單一值也會儲存在 first_value 中。

encoded_data

bytes

使用 Golomb-Rice 編碼器進行編碼的編碼差異。

RiceDeltaEncoded256Bit

RiceDeltaEncoded32Bit 相同,差別只在於編碼 256 位元數字。

欄位
first_value_first_part

uint64

編碼資料中第一個項目的前 64 位元 (雜湊)。如果這個欄位空白,前 64 位元全為零。

first_value_second_part

fixed64

編碼資料中第一個項目的 65 到 128 位元 (雜湊)。如果這個欄位留空,65 到 128 位元都會全為零。

first_value_third_part

fixed64

編碼資料中第一個項目的 129 到 192 位元 (雜湊)。如果這個欄位留空,129 到 192 位元的值都會是零。

first_value_fourth_part

fixed64

編碼資料中第一個項目 (雜湊) 的最後 64 位元。如果這個欄位空白,最後 64 位元則為零。

rice_parameter

int32

Golomb-Rice 參數。此參數保證介於 227 到 254 (含) 之間。

entries_count

int32

已編碼資料中經過差異處理的項目數量。如果只編碼了一個整數,這個值將會是零,而單一值也會儲存在 first_value 中。

encoded_data

bytes

使用 Golomb-Rice 編碼器進行編碼的編碼差異。

RiceDeltaEncoded32Bit

Rice-Golomb 編碼的資料。用於雜湊或移除索引。我們保證此處的每個雜湊或索引長度皆相同,且長度為 32 位元。

一般而言,如果我們按照字母順序排序所有項目,會發現較高順序的變動頻率通常不會像較低點的一樣高。也就是說,如果我們也採用項目之間的相鄰差異,則高排序位元很可能是 0。這種攻擊手法是藉由選擇特定數目的位元來入侵這種極高的可能性,所有比這個數字更重要,都不是零,因此我們使用一元編碼。請參閱 rice_parameter 欄位。

歷史附註:此 API 的第 4 版首次使用 Rice-delta 編碼。V5 中做了兩個重大的改善:首先,Rice-delta 編碼現可使用超過 4 個位元組的雜湊前置字元;其次,編碼資料現在視為大端子,避免花費昂貴的排序步驟。

欄位
first_value

uint32

編碼資料中的第一個項目 (雜湊或索引),或者如果只編碼一個雜湊前置字元或索引,則會是該項目的值。如果此欄位為空白,則項目為 0。

rice_parameter

int32

Golomb-Rice 參數。此參數保證介於 3 到 30 (含) 之間。

entries_count

int32

已編碼資料中經過差異處理的項目數量。如果只編碼了一個整數,這個值將會是零,而單一值也會儲存在 first_value 中。

encoded_data

bytes

使用 Golomb-Rice 編碼器進行編碼的編碼差異。

RiceDeltaEncoded64Bit

RiceDeltaEncoded32Bit 相同,差別在於前者會對 64 位元數字進行編碼。

欄位
first_value

uint64

編碼資料中的第一個項目 (雜湊),或者如果只編碼一個雜湊前置字串,則該項目的值。如果此欄位為空白,則項目為 0。

rice_parameter

int32

Golomb-Rice 參數。此參數保證介於 35 到 62 (含) 之間。

entries_count

int32

已編碼資料中經過差異處理的項目數量。如果只編碼了一個整數,這個值將會是零,而單一值也會儲存在 first_value 中。

encoded_data

bytes

使用 Golomb-Rice 編碼器進行編碼的編碼差異。

SearchHashesRequest

用戶端問題搜尋特定雜湊前置字串的要求。

此操作僅可搜尋威脅清單,不會搜尋非威脅清單,例如全域快取。

V5 新功能:用戶端不需要在本機資料庫中指定 ClientInfo 或雜湊清單的狀態。這麼做是為了進一步保障隱私權。此外,客戶不需要傳送他們感興趣的威脅類型。

欄位
hash_prefixes[]

bytes

必要欄位。要查詢的雜湊前置字串。用戶端不得傳送超過 1000 個雜湊前置字元。不過,按照網址處理程序的指示,用戶端「不」需要傳送超過 30 個雜湊前置字元。

目前,每個雜湊前置字串長度都必須剛好是 4 個位元組。這東西在未來會很放鬆。

filter

string

選用設定。如果用戶端有意篩選,例如只擷取特定類型的威脅,您可以指定這個條件。如果省略,系統會傳回所有相符的威脅。因此,強烈建議您省略這項設定,讓安全瀏覽功能提供最完善的保護。

篩選器是使用 Google 一般運算語言指定,如需一般範例及範例,請造訪 https://github.com/google/cel-spec。以下列舉幾個適用的具體範例:

篩選器「"threat_type == ThreatType.SOCIAL_ENGINEERING"」要求 FullHashDetail 中的威脅類型必須是 SOCIAL_ENGINEERING。ID "threat_type" 是指目前的威脅類型。ID "ThreatType" 是指收集所有可能的威脅類型。

篩選器「"threat_type in [ ThreatType.UNWANTED_SOFTWARE, ThreatType.MALWARE ]"」規定威脅類型必須是「UNWANTED_SOFTWARE」或「MALWARE」。

SearchHashesResponse

搜尋威脅雜湊後傳回的回應。

如果找不到任何結果,伺服器會傳回「OK」狀態 (HTTP 狀態碼 200),且 full_hashes 欄位空白,不會傳回 NOT_FOUND 狀態 (HTTP 狀態碼 404)。

V5 新功能FullHashFullHashDetail 有所區隔。如果雜湊值代表某個網站有多個威脅 (例如惡意軟體和 SOCIAL_ENGINEERING),則完整的雜湊值在 V4 中不需要傳送兩倍。此外,快取持續時間已簡化為單一 cache_duration 欄位。

欄位
full_hashes[]

FullHash

未排序的清單。找到的完整雜湊清單 (未排序)。

cache_duration

Duration

用戶端快取持續時間。用戶端「必須」將這段時間長度新增至目前時間,才能決定到期時間。接著,無論回應中傳回多少完整雜湊,到期時間都會套用至用戶端在要求中查詢的每個雜湊前置字串。即使伺服器未傳回特定雜湊前置字元的完整雜湊,用戶端也「必須」快取這一點。

如果只有 full_hashes 欄位為空白,用戶端「可能」會增加 cache_duration,以確定晚於伺服器指定的新到期時間。無論如何,增加的快取持續時間一律不得超過 24 小時。

重要事項:用戶端「不得」假設伺服器針對所有回應傳回相同的快取時間長度。伺服器可以視情況為不同的回應選擇不同的快取持續時間。

SizeConstraints

雜湊清單的大小限制。

欄位
max_update_entries

int32

項目數的大小上限。更新作業包含的項目不會超過這個值,但有可能更新包含的項目數量可能會少於這個值。這個值不得小於 1024。如果省略或設為零,就不會設定更新大小限制。

max_database_entries

int32

設定用戶端對於清單本機資料庫內有多少項目數量上限。(伺服器「可能」導致用戶端儲存的項目數量少於這個數量)。如果省略或設為零,系統就不會設定資料庫大小限制。

ThreatAttribute

威脅的屬性。這些屬性可能會讓特定威脅產生額外的意義,但不會影響威脅類型。舉例來說,某個屬性指定的信賴水準可能較低,但其他屬性可能會指定高信賴水準。日後可能會新增更多屬性。

列舉
THREAT_ATTRIBUTE_UNSPECIFIED 未知的屬性。如果伺服器傳回這個參數,用戶端應完全忽略包含的 FullHashDetail
CANARY 表示 Threat_type 不應用於強制執行。
FRAME_ONLY 表示 Threat_type 只可用於對頁框強制執行。

ThreatType

威脅類型。

列舉
THREAT_TYPE_UNSPECIFIED 未知的威脅類型。如果伺服器傳回這個參數,用戶端應完全忽略包含的 FullHashDetail
MALWARE

惡意軟體威脅類型。只要軟體或行動應用程式會刻意危害電腦、行動裝置、這些裝置執行的軟體或其使用者,就屬於惡意軟體。惡意軟體會帶來各種形式的惡意行為,包括未經使用者同意擅自安裝軟體,以及安裝病毒等有害軟體。

詳情請參閱這裡

SOCIAL_ENGINEERING

社交工程威脅類型。社交工程網頁會假裝代表第三方,意圖混淆觀眾進行操作,導致觀眾僅信任第三方的真人服務專員。網路釣魚是一種社交工程,會誘騙觀眾執行提供個人資訊 (如登入憑證) 的特定動作。

詳情請參閱這裡

UNWANTED_SOFTWARE 垃圾軟體威脅類型。垃圾軟體是指未遵循 Google 軟體規範,但非惡意軟體的軟體。
POTENTIALLY_HARMFUL_APPLICATION Google Play 安全防護為 Play 商店使用的可能有害應用程式威脅類型。