No Storage Real Time Mode

Cuando los clientes eligen usar la versión 5 de la Navegación segura de Google en el modo en tiempo real sin almacenamiento, no necesitan mantener ninguna base de datos local persistente. Sin embargo, se espera que el cliente siga manteniendo una caché local. Esta caché local no necesita estar en un almacenamiento persistente y se puede borrar en caso de presión de memoria.

Cada vez que el cliente desea verificar una URL en particular, siempre se conecta al servidor para realizar la verificación. Este modo es similar al que pueden implementar los clientes de la API de Lookup v4.

En comparación con el modo en tiempo real, este modo puede usar más ancho de banda de la red, pero puede ser más adecuado si al cliente le resulta inconveniente mantener un estado local persistente.

Procedimiento de verificación de URLs en tiempo real sin una base de datos local

Este procedimiento toma una sola URL u y devuelve SAFE o UNSAFE.

  1. Sea expressions una lista de expresiones de sufijo o prefijo generadas por la URL u.
  2. Sea expressionHashes una lista en la que los elementos son hashes SHA256 de cada expresión en expressions.
  3. Sea expressionHashPrefixes una lista en la que los elementos son los primeros 4 bytes de cada hash en expressionHashes.
  4. Para cada expressionHashPrefix de expressionHashPrefixes:
    1. Busca expressionHashPrefix en la caché local.
    2. Si se encuentra la entrada almacenada en caché, haz lo siguiente:
      1. Determina si la hora actual es posterior a la hora de vencimiento.
      2. Si es mayor, haz lo siguiente:
        1. Quita la entrada almacenada en caché encontrada de la caché local.
        2. Continúa con el bucle.
      3. Si no es mayor, haz lo siguiente:
        1. Quita este expressionHashPrefix en particular de expressionHashPrefixes.
        2. Comprueba si el hash completo correspondiente dentro de expressionHashes se encuentra en la entrada almacenada en caché.
        3. Si se encuentra, devuelve UNSAFE.
        4. Si no se encuentra, continúa con el bucle.
    3. Si no se encuentra la entrada almacenada en caché, continúa con el bucle.
  5. Envía expressionHashPrefixes al servidor de la versión 5 de la Navegación segura de Google con RPC SearchHashes o el método de REST hashes.search. Si se produjo un error (incluidos errores de red, errores de HTTP, etcétera), devuelve SAFE. De lo contrario, sea response la respuesta recibida del servidor de SB, que es una lista de hashes completos junto con información auxiliar que identifica la naturaleza de la amenaza (ingeniería social, software malicioso, etcétera), así como el tiempo de vencimiento de la caché expiration.
  6. Para cada fullHash de response:
    1. Inserta fullHash en la caché local, junto con expiration.
  7. Para cada fullHash de response:
    1. Sea isFound el resultado de encontrar fullHash en expressionHashes.
    2. Si isFound es falso, continúa con el bucle.
    3. Si isFound es verdadero, se devuelve UNSAFE.
  8. Muestra SAFE.

Al igual que con el modo en tiempo real, este procedimiento no especifica exactamente cómo enviar los prefijos de hash al servidor. Por ejemplo, es aceptable que el cliente envíe todos los expressionHashPrefixes en una sola solicitud, y también es aceptable que envíe cada prefijo individual en expressionHashPrefixes al servidor en solicitudes separadas (quizás de forma paralela). También es aceptable que el cliente envíe prefijos hash no relacionados o generados de forma aleatoria junto con los prefijos hash en expressionHashPrefixes, siempre y cuando la cantidad de prefijos hash enviados en una sola solicitud no supere los 30.