Method: hashes.search

Pesquisa hashes completos que correspondem aos prefixos especificados.

Esse é um método personalizado, conforme definido em https://google.aip.dev/136. O método personalizado se refere a um método com um nome personalizado na nomenclatura geral de desenvolvimento de APIs do Google, não ao uso de um método HTTP personalizado.

Solicitação HTTP

GET https://safebrowsing.googleapis.com/v5/hashes:search

O URL usa a sintaxe de transcodificação gRPC.

Parâmetros de consulta

Parâmetros
hashPrefixes[]

string (bytes format)

Obrigatório. Os prefixos de hash a serem pesquisados. Os clientes NÃO PODEM enviar mais de 1.000 prefixos de hash. No entanto, seguindo o procedimento de processamento de URL, os clientes NÃO DEVEM precisar enviar mais de 30 prefixos de hash.

No momento, cada prefixo de hash precisa ter exatamente 4 bytes. Isso PODE ser flexibilizado no futuro.

Uma string codificada em base64.

Corpo da solicitação

O corpo da solicitação precisa estar vazio.

Corpo da resposta

A resposta retornada após a pesquisa de hashes de ameaças.

Se nada for encontrado, o servidor vai retornar um status OK (código de status HTTP 200) com o campo fullHashes vazio, em vez de um status NOT_FOUND (código de status HTTP 404).

Novidades na V5: há uma separação entre FullHash e FullHashDetail. No caso em que um hash representa um site com várias ameaças (por exemplo, MALWARE e SOCIAL_ENGINEERING), não é necessário enviar o hash completo duas vezes, como na V4. Além disso, a duração do cache foi simplificada em um único campo cacheDuration.

Se bem-sucedido, o corpo da resposta incluirá dados com a estrutura a seguir:

Representação JSON
{
  "fullHashes": [
    {
      object (FullHash)
    }
  ],
  "cacheDuration": string
}
Campos
fullHashes[]

object (FullHash)

Lista não ordenada. A lista não ordenada de hashes completos encontrados.

cacheDuration

string (Duration format)

A duração do cache do lado do cliente. O cliente PRECISA adicionar essa duração ao horário atual para determinar o horário de expiração. O tempo de expiração se aplica a todos os prefixos de hash consultados pelo cliente na solicitação, independentemente de quantos hashes completos são retornados na resposta. Mesmo que o servidor não retorne hashes completos para um determinado prefixo de hash, esse fato também PRECISA ser armazenado em cache pelo cliente.

Se e somente se o campo fullHashes estiver vazio, o cliente poderá aumentar o cacheDuration para determinar uma nova expiração posterior à especificada pelo servidor. Em qualquer caso, a duração aumentada do cache não pode ser maior que 24 horas.

Importante: o cliente NÃO PODE presumir que o servidor vai retornar a mesma duração de cache para todas as respostas. O servidor PODE escolher durações de cache diferentes para respostas diferentes, dependendo da situação.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

FullHash

O hash completo identificado com uma ou mais correspondências.

Representação JSON
{
  "fullHash": string,
  "fullHashDetails": [
    {
      object (FullHashDetail)
    }
  ]
}
Campos
fullHash

string (bytes format)

O hash completo correspondente. Este é o hash SHA256. O comprimento será exatamente de 32 bytes.

Uma string codificada em base64.

fullHashDetails[]

object (FullHashDetail)

Lista não ordenada. Um campo repetido que identifica os detalhes relevantes para esse hash completo.

FullHashDetail

Detalhes sobre um hash completo correspondente.

Observação importante sobre compatibilidade futura: novos tipos e atributos de ameaças podem ser adicionados pelo servidor a qualquer momento. Essas adições são consideradas mudanças de versão secundárias. A política do Google não permite expor números de versões secundárias em APIs (consulte https://cloud.google.com/apis/design/versioning para conferir a política de controle de versões). Portanto, os clientes PRECISAM estar preparados para receber mensagens FullHashDetail que contenham valores de enumeração ThreatType ou ThreatAttribute considerados inválidos pelo cliente. Portanto, é responsabilidade do cliente verificar a validade de todos os valores de enumeração ThreatType e ThreatAttribute. Se algum valor for considerado inválido, o cliente PRECISA ignorar toda a mensagem FullHashDetail.

Representação JSON
{
  "threatType": enum (ThreatType),
  "attributes": [
    enum (ThreatAttribute)
  ]
}
Campos
threatType

enum (ThreatType)

O tipo de ameaça. Esse campo nunca vai ficar vazio.

attributes[]

enum (ThreatAttribute)

Lista não ordenada. Outros atributos sobre esses hashes completos. Pode estar vazio.

ThreatAttribute

Atributos de ameaças. Esses atributos podem conferir um significado adicional a uma ameaça específica, mas não afetam o tipo dela. Por exemplo, um atributo pode especificar uma confiança menor, enquanto outro pode especificar uma confiança maior. Mais atributos podem ser adicionados no futuro.

Tipos enumerados
THREAT_ATTRIBUTE_UNSPECIFIED Atributo desconhecido. Se isso for retornado pelo servidor, o cliente vai ignorar o FullHashDetail envolvente.
CANARY Indica que o threatType não deve ser usado para aplicação.
FRAME_ONLY Indica que o threatType só deve ser usado para aplicação em frames.