Method: hashes.search

Busca hashes completos que coincidan con los prefijos especificados.

Este es un método personalizado, como lo define https://google.aip.dev/136 (se refiere a que este método tiene un nombre personalizado dentro de la nomenclatura general de desarrollo de la API de Google; no se refiere al uso de un método HTTP personalizado).

Solicitud HTTP

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

La URL usa la sintaxis de la transcodificación gRPC.

Parámetros de consulta

Parámetros
hashPrefixes[]

string (bytes format)

Obligatorio. Los prefijos de hash que se deben buscar. Los clientes NO DEBEN enviar más de 1,000 prefijos de hash. Sin embargo, siguiendo el procedimiento de procesamiento de URL, los clientes NO DEBEN enviar más de 30 prefijos de hash.

Actualmente, cada prefijo de hash debe tener exactamente 4 bytes de longitud. Esto PUEDE ser relajado en el futuro.

String codificada en base64.

Cuerpo de la solicitud

El cuerpo de la solicitud debe estar vacío.

Cuerpo de la respuesta

La respuesta que se muestra después de buscar hashes de amenazas.

Si no se encuentra nada, el servidor mostrará un estado OK (código de estado HTTP 200) con el campo fullHashes vacío, en lugar de mostrar un estado NOT_FOUND (código de estado HTTP 404).

Novedades de V5: Hay una separación entre FullHash y FullHashDetail. En el caso en que un hash represente un sitio que tenga múltiples amenazas (p.ej., MALWARE y SOCIAL_ENGINEERING), no es necesario enviar el hash completo dos veces que en V4. Además, la duración de la caché se simplificó en un solo campo cacheDuration.

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Representación JSON
{
  "fullHashes": [
    {
      object (FullHash)
    }
  ],
  "cacheDuration": string
}
Campos
fullHashes[]

object (FullHash)

Lista sin ordenar. La lista desordenada de hashes completos encontrada.

cacheDuration

string (Duration format)

La duración de la caché del cliente. El cliente DEBE agregar esta duración a la hora actual para determinar la fecha de vencimiento. El tiempo de vencimiento se aplica a cada prefijo de hash consultado por el cliente en la solicitud, sin importar cuántos hashes completos se devuelvan en la respuesta. Incluso si el servidor no muestra hashes completos para un prefijo de hash en particular, el cliente DEBE almacenar este hecho en caché.

Siempre y cuando el campo fullHashes esté vacío, el cliente PUEDE aumentar el valor de cacheDuration para determinar un nuevo vencimiento que sea posterior al especificado por el servidor. En cualquier caso, la duración de la caché aumentada no debe superar las 24 horas.

Importante: el cliente NO DEBE suponer que el servidor devolverá la misma duración de caché para todas las respuestas. Es posible que el servidor elija distintas duraciones de caché para diferentes respuestas según la situación.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

FullHash

El hash completo identificado con una o más coincidencias.

Representación JSON
{
  "fullHash": string,
  "fullHashDetails": [
    {
      object (FullHashDetail)
    }
  ]
}
Campos
fullHash

string (bytes format)

El hash completo coincidente. Este es el hash SHA256. La longitud será exactamente de 32 bytes.

String codificada en base64.

fullHashDetails[]

object (FullHashDetail)

Lista sin ordenar. Un campo repetido que identifica los detalles relevantes para este hash completo.

FullHashDetail

Detalles sobre un hash completo coincidente.

Nota importante sobre la compatibilidad con versiones futuras: el servidor puede agregar nuevos tipos y atributos de amenazas en cualquier momento. y esas adiciones se consideran cambios de versiones secundarias. La política de Google es no exponer los números de versiones secundarias en las APIs (consulta https://cloud.google.com/apis/design/versioning para conocer la política de control de versiones), por lo que los clientes DEBEN estar preparados para recibir mensajes FullHashDetail que contengan valores de enumeración ThreatType o valores de enumeración ThreatAttribute que el cliente considere no válidos. Por lo tanto, es responsabilidad del cliente verificar la validez de todos los valores de enumeración ThreatType y ThreatAttribute. si algún valor se considera no válido, el cliente DEBE ignorar todo el mensaje FullHashDetail.

Representación JSON
{
  "threatType": enum (ThreatType),
  "attributes": [
    enum (ThreatAttribute)
  ]
}
Campos
threatType

enum (ThreatType)

El tipo de amenaza. Este campo nunca estará vacío.

attributes[]

enum (ThreatAttribute)

Lista sin ordenar. Atributos adicionales sobre esos hashes completos. Este campo puede estar vacío.

ThreatType

Tipos de amenazas.

Enumeraciones
THREAT_TYPE_UNSPECIFIED Tipo de amenaza desconocido. Si el servidor devuelve esto, el cliente debe ignorar por completo el FullHashDetail que lo contiene.
MALWARE

Tipo de amenaza de software malicioso. Un software malicioso es cualquier software o aplicación que se diseña específicamente para dañar una computadora, un dispositivo móvil, el software que lo ejecuta o a los usuarios. Su objetivo es llevar a cabo una acción malintencionada, como instalar software dañino (por ejemplo, virus) o programas sin el consentimiento del usuario.

Puedes obtener más información en este vínculo.

SOCIAL_ENGINEERING

Tipo de amenaza de ingeniería social. Las páginas de ingeniería social pretenden falsamente actuar en nombre de un tercero con la intención de confundir a los usuarios para que realicen una acción con la que el usuario solo confiaría en un verdadero agente de ese tercero. El phishing es un tipo de ingeniería social que engaña al usuario para que realice la acción específica de proporcionar información, como las credenciales de acceso.

Puedes obtener más información en este vínculo.

UNWANTED_SOFTWARE Tipo de amenaza de software no deseado. El software no deseado es aquel que no cumple con los Principios sobre el software de Google, pero que no es software malicioso.
POTENTIALLY_HARMFUL_APPLICATION Tipo de amenaza de aplicación potencialmente dañina como usa Google Play Protect para Play Store.

ThreatAttribute

Atributos de las amenazas. Estos atributos pueden conferir significado adicional a una amenaza en particular, pero no afectarán el tipo de amenaza. Por ejemplo, un atributo puede especificar un nivel de confianza más bajo mientras que otro puede especificar un nivel de confianza mayor. Es posible que se agreguen más atributos en el futuro.

Enumeraciones
THREAT_ATTRIBUTE_UNSPECIFIED Atributo desconocido. Si el servidor devuelve esto, el cliente debe ignorar por completo el FullHashDetail que lo contiene.
CANARY Indica que ThreatType no se debe usar para la aplicación forzosa.
FRAME_ONLY Indica que ThreatType solo se debe usar para la aplicación forzosa en tramas.