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.
- Sia
expressionsun elenco di espressioni di suffisso/prefisso generate dall'URLu. - Sia
expressionHashesun elenco in cui gli elementi sono hash SHA256 di ogni espressione inexpressions. - Sia
expressionHashPrefixesun elenco in cui gli elementi sono i primi 4 byte di ogni hash inexpressionHashes. - Per ogni
expressionHashPrefixdiexpressionHashPrefixes:- Cerca
expressionHashPrefixnella cache locale. - Se viene trovata la voce memorizzata nella cache:
- Determina se l'ora attuale è successiva all'ora di scadenza.
- Se è maggiore:
- Rimuovi la voce memorizzata nella cache trovata dalla cache locale.
- Continua con il loop.
- Se non è maggiore:
- Rimuovere questo particolare
expressionHashPrefixdaexpressionHashPrefixes. - Controlla se l'hash completo corrispondente all'interno di
expressionHashessi trova nella voce memorizzata nella cache. - Se viene trovato, restituisci
UNSAFE. - Se non viene trovato, continua con il ciclo.
- Rimuovere questo particolare
- Se la voce memorizzata nella cache non viene trovata, continua con il ciclo.
- Cerca
- Invia
expressionHashPrefixesal 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), restituisciSAFE. In caso contrario, la risposta saràresponsericevuta 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 cacheexpiration. - Per ogni
fullHashdiresponse:- Inserisci
fullHashnella cache locale, insieme aexpiration.
- Inserisci
- Per ogni
fullHashdiresponse:- Sia
isFoundil risultato della ricerca difullHashinexpressionHashes. - Se
isFoundè False, continua con il ciclo. - Se
isFoundè True, restituisceUNSAFE.
- Sia
- 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.