Local List Mode

如果客户端选择在此模式下使用 Google Safe Browsing v5,则客户端行为与 v4 Update API 类似,只是使用了 v5 改进的 API 表面。客户端将在其本地数据库中维护一组威胁列表,这些列表以主机后缀/路径前缀网址表达式的 SHA256 哈希前缀格式表示。每当客户端想要检查特定网址时,都会使用本地威胁列表执行检查。当且仅当存在匹配项时,客户端才会连接到服务器以继续检查。

与上述情况一样,客户端也会维护一个本地缓存,该缓存不必位于永久性存储空间中。

本地威胁列表网址检查程序

当客户端使用实时模式程序并返回值 UNSURE 时,也会执行此程序。

此过程接受单个网址 u,并返回 SAFE 或 UNSAFE。

  1. 假设 expressions 是由网址 u 生成的后缀/前缀表达式列表。
  2. 假设 expressionHashes 是一个列表,其中的元素是 expressions 中每个表达式的 SHA256 哈希值。
  3. 假设 expressionHashPrefixes 是一个列表,其中的元素是 expressionHashes 中每个哈希的前 4 个字节。
  4. 对于 expressionHashPrefixes 的每个 expressionHashPrefix:
    1. 在本地缓存中查找 expressionHashPrefix。
    2. 如果找到缓存条目:
      1. 确定当前时间是否晚于其到期时间。
      2. 如果大于:
        1. 从本地缓存中移除找到的缓存条目。
        2. 继续循环。
      3. 如果该值不大于 0,则:
        1. 从 expressionHashPrefixes 中移除此特定 expressionHashPrefix。
        2. 检查 expressionHashes 中的相应完整哈希是否在缓存条目中找到。
        3. 如果找到,则返回 UNSAFE。
        4. 如果未找到,则继续循环。
    3. 如果未找到缓存条目,则继续执行循环。
  5. 对于 expressionHashPrefixes 的每个 expressionHashPrefix:
    1. 在本地威胁列表数据库中查找 expressionHashPrefix。
    2. 如果在本地威胁列表数据库中找不到 expressionHashPrefix,请将其从 expressionHashPrefixes 中移除。
  6. 使用 RPC SearchHashes 或 REST 方法 hashes.search 将 expressionHashPrefixes 发送到 Google 安全浏览 v5 服务器。如果发生错误(包括网络错误、HTTP 错误等),则返回 SAFE。否则,让 response 为从 SB 服务器收到的 response,这是一个完整哈希的列表,其中包含一些用于标识威胁性质(社会工程、恶意软件等)的辅助信息,以及缓存到期时间 expiration。
  7. 对于 response 的每个 fullHash:
    1. 将 fullHash 插入本地缓存,同时插入 expiration。
  8. 对于 response 的每个 fullHash:
    1. 设 isFound 为在 expressionHashes 中查找 fullHash 的结果。
    2. 如果 isFound 为 False,则继续执行循环。
    3. 如果 isFound 为 True,则返回 UNSAFE。
  9. 返回 SAFE。