本機資料庫
本文適用於以下方法: 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
欄位設為空字串;這會強制進行完整更新,並傳回全新的清單和狀態。