Quando os clientes escolhem usar a Navegação segura do Google v5 no modo em tempo real sem armazenamento, não é necessário manter um banco de dados local persistente. No entanto, o cliente ainda precisa manter um cache local. Esse cache local não precisa estar em armazenamento permanente e pode ser limpo em caso de pressão na memória.
Sempre que o cliente quer verificar um URL específico, ele se conecta ao servidor para fazer uma verificação. Esse modo é semelhante ao que os clientes da API Lookup v4 podem implementar.
Em comparação com o modo em tempo real, esse modo pode usar mais largura de banda da rede, mas pode ser mais adequado se for inconveniente para o cliente manter um estado local persistente.
O procedimento de verificação de URL em tempo real sem um banco de dados local
Esse procedimento usa um único URL u e retorna SAFE ou UNSAFE.
- Seja
expressionsuma lista de expressões de sufixo/prefixo geradas pelo URLu. - Seja
expressionHashesuma lista em que os elementos são hashes SHA256 de cada expressão emexpressions. - Seja
expressionHashPrefixesuma lista em que os elementos são os primeiros quatro bytes de cada hash emexpressionHashes. - Para cada
expressionHashPrefixdeexpressionHashPrefixes:- Pesquisar
expressionHashPrefixno cache local. - Se a entrada em cache for encontrada:
- Determine se o horário atual é maior que o prazo de validade.
- Se for maior:
- Remova a entrada em cache encontrada do cache local.
- Continue com o loop.
- Se não for maior:
- Remova esse
expressionHashPrefixespecífico deexpressionHashPrefixes. - Verifique se o hash completo correspondente em
expressionHashesé encontrado na entrada em cache. - Se encontrado, retorne
UNSAFE. - Se não for encontrado, continue com o loop.
- Remova esse
- Se a entrada em cache não for encontrada, continue com o loop.
- Pesquisar
- Envie
expressionHashPrefixesao servidor da Navegação segura do Google v5 usando RPC SearchHashes ou o método REST hashes.search. Se ocorrer um erro (incluindo erros de rede, erros HTTP etc.), retorneSAFE. Caso contrário, deixe a resposta ser oresponserecebido do servidor SB, que é uma lista de hashes completos com algumas informações auxiliares que identificam a natureza da ameaça (engenharia social, malware etc.), bem como o tempo de expiração do cacheexpiration. - Para cada
fullHashderesponse:- Insira
fullHashno cache local, junto comexpiration.
- Insira
- Para cada
fullHashderesponse:- Seja
isFoundo resultado de encontrarfullHashemexpressionHashes. - Se
isFoundfor "False", continue com o loop. - Se
isFoundfor verdadeiro, retorneUNSAFE.
- Seja
- Retorne o
SAFE.
Assim como no modo em tempo real, este procedimento não especifica exatamente como enviar os prefixos de hash ao servidor. Por exemplo, é aceitável que o cliente envie todos os expressionHashPrefixes em uma única solicitação, e também é aceitável que ele envie cada prefixo individual em expressionHashPrefixes para o servidor em solicitações separadas (talvez em paralelo). Também é aceitável que o cliente envie prefixos de hash não relacionados ou gerados aleatoriamente junto com os prefixos de hash em expressionHashPrefixes, desde que o número de prefixos de hash enviados em uma única solicitação não exceda 30.