Local List Mode

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

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

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

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

此过程接受单个网址 u,并返回 SAFEUNSAFE

  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.searchexpressionHashPrefixes 发送到 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