No Storage Real Time Mode

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.

  1. Seja expressions uma lista de expressões de sufixo/prefixo geradas pelo URL u.
  2. Seja expressionHashes uma lista em que os elementos são hashes SHA256 de cada expressão em expressions.
  3. Seja expressionHashPrefixes uma lista em que os elementos são os primeiros quatro bytes de cada hash em expressionHashes.
  4. Para cada expressionHashPrefix de expressionHashPrefixes:
    1. Pesquisar expressionHashPrefix no cache local.
    2. Se a entrada em cache for encontrada:
      1. Determine se o horário atual é maior que o prazo de validade.
      2. Se for maior:
        1. Remova a entrada em cache encontrada do cache local.
        2. Continue com o loop.
      3. Se não for maior:
        1. Remova esse expressionHashPrefix específico de expressionHashPrefixes.
        2. Verifique se o hash completo correspondente em expressionHashes é encontrado na entrada em cache.
        3. Se encontrado, retorne UNSAFE.
        4. Se não for encontrado, continue com o loop.
    3. Se a entrada em cache não for encontrada, continue com o loop.
  5. Envie expressionHashPrefixes ao 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.), retorne SAFE. Caso contrário, deixe a resposta ser o response recebido 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 cache expiration.
  6. Para cada fullHash de response:
    1. Insira fullHash no cache local, junto com expiration.
  7. Para cada fullHash de response:
    1. Seja isFound o resultado de encontrar fullHash em expressionHashes.
    2. Se isFound for "False", continue com o loop.
    3. Se isFound for verdadeiro, retorne UNSAFE.
  8. 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.