本機資料庫

本文適用於以下方法: Update API

資料庫設定

使用 Update API 的用戶端必須設定本機資料庫,並初步下載要使用的 Web Risk 清單。如要進一步瞭解如何執行初始擷取作業,請參閱下方的「完整更新」一節。

資料庫更新

為確保防範最新威脅,強烈建議用戶使用 threatLists.computeDiff 方法,定期更新本機 Web Risk 清單。

threatLists.computeDiff 要求會指定要更新的清單。如果用戶端有記憶體或頻寬限制,也可以使用要求設定更新限制 (請參閱「更新限制」)。

如以下說明,threatLists.computeDiff response會傳回每個清單的完整更新或部分更新。

完整更新

如果用戶端將 versionToken 欄位留空,或伺服器判斷需要完整更新,就會傳回完整更新。如要完整更新,系統只會傳回新增的項目。用戶端應先清除本機資料庫,再套用更新並執行驗證檢查

空白狀態

用戶端傳送清單的初始要求時,系統會傳回完整更新。在此情況下,要求中的 versionToken 欄位會留空 (因為沒有可提供的值),而回應中的 newVersionToken 欄位會傳回本機清單的初始狀態。如果用戶端在後續要求中刻意將 versionToken 欄位留空,也會傳回完整更新。這會強制執行完整更新,並在回應的 newVersionToken 欄位中傳回新狀態。

伺服器決策

有時,即使用戶端只要求部分更新,Web Risk 伺服器仍會傳回完整更新。如果用戶端一開始下載的是清單的小版本,之後更新為較大的版本,就會發生這種情況;伺服器只會傳回包含整個清單的完整更新。如果用戶端已許久未下載資料,並要求部分更新,也可能發生這種情況;同樣地,伺服器只會傳回包含完整清單的完整更新。

部分更新

當用戶端在threatLists.computeDiff要求中提供 versionToken 欄位的值時,系統會傳回部分更新 (如上所述,例外狀況是伺服器判斷需要完整更新)。如果是部分更新,系統會傳回新增移除的項目。用戶端會更新本機資料庫中的清單 (先套用移除作業,再套用新增作業),然後執行驗證檢查

新增

新增內容是應加入本機資料庫的 SHA256 雜湊前置字元。 大多數雜湊前置字串的長度為 4 個位元組,但有些雜湊前置字串的長度可能介於 4 到 32 個位元組之間。因此,系統可能會傳回多組加法;例如,一組包含 4 位元組前置字串,另一組包含 5 位元組前置字串。

如果用戶端支援壓縮功能,回應可以透過 Rice 壓縮功能壓縮。不過,只有 4 位元組的雜湊前置字串會壓縮。系統一律會以未壓縮的原始格式傳送較長的雜湊前置字串。詳情請參閱「壓縮」。

移除網址

移除作業是從零開始的索引,指向按字典順序排序的用戶端資料庫,指出應從本機資料庫移除的項目。系統只會傳回一組移除作業。

如果用戶端支援壓縮,「rice hashes」和「rice indices」就會傳回。如果系統不支援壓縮,「原始雜湊」和「原始索引」就會傳回。詳情請參閱「壓縮」(web-risk/docs/compression)。

驗證檢查

當系統傳回threatLists.computeDiff 回應 (完整更新或部分更新) 時,用戶端應執行驗證檢查。

用戶端會先更新本機資料庫中的清單 (先套用移除作業,再套用新增作業)。接著,用戶端會計算 (依字典順序排序) 本機清單的 SHA256 雜湊,並與回應中傳回的總和檢查碼進行比較。如果兩個值相等,則 Web Risk 清單會視為「正確」。

如果這兩個值不相等,系統會將 Web Risk 清單視為「損毀」。用戶端必須從資料庫清除清單,並重新發出第二次更新,且 versionToken 欄位設為空字串;這會強制進行完整更新,並傳回全新的清單和狀態。