No Storage Real Time Mode

Quando i client scelgono di utilizzare Navigazione sicura v5 di Google in modalità in tempo reale senza archiviazione, non è necessario che il client mantenga un database locale persistente. Tuttavia, il client deve comunque mantenere una cache locale. Una cache locale di questo tipo non deve trovarsi in uno spazio di archiviazione permanente e può essere cancellata in caso di pressione sulla memoria.

Ogni volta che il client vuole controllare un determinato URL, si connette sempre al server per eseguire un controllo. Questa modalità è simile a quella che possono implementare i client dell'API Lookup v4.

Rispetto alla modalità in tempo reale, questa modalità potrebbe utilizzare più larghezza di banda di rete, ma potrebbe essere più adatta se per il client è scomodo mantenere uno stato locale persistente.

Procedura di controllo degli URL in tempo reale senza un database locale

Questa procedura accetta un singolo URL u e restituisce SAFE o UNSAFE.

  1. Sia expressions un elenco di espressioni di suffisso/prefisso generate dall'URL u.
  2. Sia expressionHashes un elenco in cui gli elementi sono hash SHA256 di ogni espressione in expressions.
  3. Sia expressionHashPrefixes un elenco in cui gli elementi sono i primi 4 byte di ogni hash in expressionHashes.
  4. Per ogni expressionHashPrefix di expressionHashPrefixes:
    1. Cerca expressionHashPrefix nella cache locale.
    2. Se viene trovata la voce memorizzata nella cache:
      1. Determina se l'ora attuale è successiva all'ora di scadenza.
      2. Se è maggiore:
        1. Rimuovi la voce memorizzata nella cache trovata dalla cache locale.
        2. Continua con il loop.
      3. Se non è maggiore:
        1. Rimuovere questo particolare expressionHashPrefix da expressionHashPrefixes.
        2. Controlla se l'hash completo corrispondente all'interno di expressionHashes si trova nella voce memorizzata nella cache.
        3. Se viene trovato, restituisci UNSAFE.
        4. Se non viene trovato, continua con il ciclo.
    3. Se la voce memorizzata nella cache non viene trovata, continua con il ciclo.
  5. Invia expressionHashPrefixes al server Google Safe Browsing v5 utilizzando RPC SearchHashes o il metodo REST hashes.search. Se si è verificato un errore (inclusi errori di rete, errori HTTP e così via), restituisci SAFE. In caso contrario, la risposta sarà response ricevuta dal server Safe Browsing, ovvero un elenco di hash completi insieme ad alcune informazioni ausiliarie che identificano la natura della minaccia (ingegneria sociale, malware e così via), nonché il tempo di scadenza della cache expiration.
  6. Per ogni fullHash di response:
    1. Inserisci fullHash nella cache locale, insieme a expiration.
  7. Per ogni fullHash di response:
    1. Sia isFound il risultato della ricerca di fullHash in expressionHashes.
    2. Se isFound è False, continua con il ciclo.
    3. Se isFound è True, restituisce UNSAFE.
  8. Ritorno: SAFE.

Come per la modalità in tempo reale, questa procedura non specifica esattamente come inviare i prefissi hash al server. Ad esempio, è accettabile che il client invii tutti i expressionHashPrefixes in un'unica richiesta, così come è accettabile che invii ogni singolo prefisso in expressionHashPrefixes al server in richieste separate (magari procedendo in parallelo). È inoltre accettabile che il client invii prefissi hash non correlati o generati in modo casuale insieme ai prefissi hash in expressionHashPrefixes, a condizione che il numero di prefissi hash inviati in una singola richiesta non superi 30.