Migration From V4

Google 安全瀏覽 v5 相較於 v4 的重大改進之一 (具體來說,是 v4 Update API) 是資料的新鮮度和涵蓋率。由於保護機制高度仰賴由用戶端維護的本機資料庫,因此本機資料庫更新的延遲和大小是導致遺漏保護機制的主因。在 v4 中,一般用戶端需要 20 到 50 分鐘才能取得最新的威脅清單。不幸的是,網路釣魚攻擊傳播速度很快:截至 2021 年,60% 的攻擊網站會在 10 分鐘內下線。我們的分析顯示,約 25% 至 30% 的網路釣魚防護功能未啟用,是因為這類資料過時。此外,部分裝置無法管理 Google 安全瀏覽威脅清單,而這份清單會隨著時間持續增加。

如果您目前使用 第 4 版 Update API,可以從第 4 版順利遷移至第 5 版,無須重設或清除本機資料庫。本節將說明如何執行這項操作。

轉換清單更新

與 V4 不同,在 V5 中,清單只會以名稱識別,這樣一來,當多個 v5 清單共用相同的威脅類型時,就能提供彈性。平台類型和威脅項目類型已在 v5 中移除。

在 v4 中,使用者會使用 threatListUpdates.fetch 方法下載清單。在 v5 中,您可以切換至 hashLists.batchGet 方法

請對要求進行下列變更:

  1. 一併移除 v4 ClientInfo 物件。請改用眾所皆知的 User-Agent 標頭,而非使用專屬欄位提供用戶端的 ID。雖然這個標頭並未規定用來提供用戶端 ID 的格式,但建議您只提供原始用戶端 ID 和用戶端版本,並以空格或斜線字元分隔。
  2. 針對每個 v4 ListUpdateRequest 物件: * 在上述表格中查詢對應的 v5 清單名稱,並在 v5 要求中提供該名稱。
    • 移除 threat_entry_typeplatform_type 等不必要的欄位。
    • v4 中的 state 欄位與 v5 versions 欄位直接相容。在 v5 中,只要使用 versions 欄位,即可傳送相同的位元組字串,而無須使用 v4 中的 state 欄位。
    • 針對 v4 限制,v5 會使用名為 SizeConstraints 的簡化版本。應捨棄 region 等其他欄位。

回應應進行下列變更:

  1. v4 enum ResponseType 已簡單取代為名為 partial_update 的布林值欄位。
  2. minimum_wait_duration 欄位現在可以為零或省略。如果是,系統會要求用戶端立即提出另一項要求。只有在用戶端在 SizeConstraints 中指定的更新大小上限小於資料庫大小上限時,才會發生這種情況。
  3. 需要調整 32 位元整數的 Rice 解碼演算法。差異在於編碼資料採用不同的字節順序。在 v4 和 v5 中,32 位元雜湊前置碼會依字典順序排序。但在 v4 中,這些前置字會在排序時視為小端排序,而在 v5 中,這些前置字會在排序時視為大端排序。也就是說,由於字典排序與大端序數字排序相同,因此用戶端不需要進行任何排序。如要查看 Chromium 在第 4 版中實作的這類例子,請按這裡。這類排序作業可以移除。
  4. 您也需要為其他雜湊長度實作 Rice 解碼演算法。

轉換雜湊搜尋

在 v4 中,使用者會使用 fullHashes.find 方法取得完整雜湊。在 v5 中,等同的方法是 hashes.search 方法

請對要求進行下列變更:

  1. 請將程式碼結構化,只傳送長度為 4 位元組的雜湊字首。
  2. 一併移除 v4 ClientInfo 物件。請改用眾所皆知的 User-Agent 標頭,而非使用專屬欄位提供用戶端的 ID。雖然這個標頭並未規定用來提供用戶端 ID 的格式,但建議您直接加入原始用戶端 ID 和用戶端版本,並以空格或斜線字元分隔。
  3. 移除 client_states 欄位。因為不再需要使用。
  4. 您不再需要加入 threat_types 和類似欄位。

回應應進行下列變更:

  1. 已移除 minimum_wait_duration 欄位,用戶端隨時可以視需要發出新要求。
  2. v4 ThreatMatch 物件已簡化為 FullHash 物件。
  3. 快取功能已簡化為單一快取時間長度。請參閱上述與快取互動程序。