Local List Mode

Когда клиенты выбирают использование Google Safe Browsing v5 в этом режиме, поведение клиента аналогично API обновления v4, за исключением использования улучшенного API v5. Клиенты будут хранить в своей локальной базе данных набор списков угроз, отформатированных как префиксы хешей SHA256 для выражений URL-адресов с суффиксом хоста/префиксом пути. Всякий раз, когда клиент хочет проверить определенный URL-адрес, выполняется проверка с использованием локального списка угроз. Только если найдено совпадение, клиент подключается к серверу для продолжения проверки.

Как и в предыдущем случае, клиент также будет поддерживать локальный кэш, который не обязательно должен храниться в постоянном хранилище.

Процедура проверки URL-адреса локального списка угроз

Эта процедура также выполняется, когда клиент использует режим реального времени , и возвращает значение UNSURE .

Эта процедура принимает один URL-адрес u и возвращает SAFE или UNSAFE .

  1. Пусть expressions это список выражений суффикса/префикса, сгенерированных URL-адресом u .
  2. Пусть expressionHashes список, элементы которого представляют собой хеши SHA256 каждого выражения из expressions .
  3. Пусть expressionHashPrefixes — список, элементы которого представляют собой первые 4 байта каждого хеша из expressionHashes .
  4. Для каждого expressionHashPrefix из expressionHashPrefixes :
    1. Найдите expressionHashPrefix в локальном кэше.
    2. Если кэшированная запись найдена:
      1. Определите, превышает ли текущее время время его истечения.
      2. Если оно больше:
        1. Удалите найденную запись из локального кэша.
        2. Продолжайте цикл.
      3. Если оно не больше:
        1. Удалите этот конкретный expressionHashPrefix из expressionHashPrefixes .
        2. Проверьте, найден ли соответствующий полный хеш в expressionHashes в кэшированной записи.
        3. Если обнаружено, вернуть UNSAFE .
        4. Если не найдено, продолжить цикл.
    3. Если кэшированная запись не найдена, продолжите цикл.
  5. Для каждого expressionHashPrefix из expressionHashPrefixes :
    1. Найдите expressionHashPrefix в локальной базе данных списков угроз.
    2. Если expressionHashPrefix не найден в локальной базе данных списков угроз, удалите его из expressionHashPrefixes .
  6. Отправьте expressionHashPrefixes на сервер Google Safe Browsing v5, используя RPC SearchHashes или REST-метод hashes.search . Если произошла ошибка (включая сетевые ошибки, ошибки HTTP и т. д.), верните SAFE . В противном случае, пусть response будет response , полученным от сервера SB, который представляет собой список полных хешей вместе с некоторой вспомогательной информацией, определяющей характер угрозы (социальная инженерия, вредоносное ПО и т. д.), а также время истечения срока действия кэша expiration .
  7. Для каждого fullHash response :
    1. Вставить fullHash в локальный кэш вместе с expiration .
  8. Для каждого fullHash response :
    1. Пусть isFound — результат поиска fullHash в expressionHashes .
    2. Если isFound равно False, продолжайте цикл.
    3. Если isFound равно True, вернуть UNSAFE .
  9. Верните SAFE .