Method: hashes.search

Wyszukiwanie pełnych haszy pasujących do określonych prefiksów.

Jest to metoda niestandardowa zdefiniowana na stronie https://google.aip.dev/136. Jest to metoda, która odnosi się do metody mającej niestandardową nazwę w ogólnym nomenklaturze programistycznego Google dotyczącej interfejsów API; nie odnosi się do korzystania z niestandardowej metody HTTP.

Żądanie HTTP

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

Adres URL używa składni transkodowania gRPC.

Parametry zapytania

Parametry
hashPrefixes[]

string (bytes format)

Wymagane. Prefiksy skrótu do wyszukania. Klienty NIE MOGĄ wysyłać więcej niż 1000 prefiksów skrótu. Jednak zgodnie z procedurą przetwarzania adresów URL klienci NIE POWINNY wysyłać więcej niż 30 prefiksów skrótu.

Obecnie każdy prefiks skrótu musi mieć dokładnie 4 bajty długości. W przyszłości MOŻESZ odpocząć.

Ciąg zakodowany w formacie base64.

Treść żądania

Treść żądania musi być pusta.

Treść odpowiedzi

Odpowiedź zwrócona po przeszukaniu haszy zagrożeń.

Jeśli nic nie zostanie znalezione, serwer zwróci stan OK (kod stanu HTTP 200) z pustym polem fullHashes zamiast stanu NOT_FOUND (kod stanu HTTP 404).

Nowości w wersji 5: FullHash i FullHashDetail są rozdzielone. W przypadku, gdy hasz reprezentuje witrynę z wieloma zagrożeniami (np. zarówno MALWARE, jak i SOCIAL_ENGINEERING), pełny hasz nie musi być przesyłany dwukrotnie niż w wersji 4. Ponadto czas przechowywania w pamięci podręcznej został uproszczony do umieszczenia w jednym polu cacheDuration.

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Zapis JSON
{
  "fullHashes": [
    {
      object (FullHash)
    }
  ],
  "cacheDuration": string
}
Pola
fullHashes[]

object (FullHash)

Lista nieuporządkowana. Nieuporządkowana lista znalezionych pełnych haszów.

cacheDuration

string (Duration format)

Czas trwania pamięci podręcznej po stronie klienta. Aby określić czas ważności, klient MUSI dodać ten czas do bieżącego czasu. Okres ważności jest następnie stosowany do każdego prefiksu skrótu, którego klient zażąda w żądaniu, niezależnie od tego, ile pełnych haszów zostało zwróconych w odpowiedzi. Nawet jeśli serwer nie zwraca pełnych haszów dla określonego prefiksu skrótu, ten fakt MUSI również być zapisany w pamięci podręcznej klienta.

Jeśli pole fullHashes jest puste, klient MOŻE zwiększyć wartość cacheDuration, aby określić nową datę ważności, która jest późniejsza niż ta określona przez serwer. W żadnym przypadku wydłużenie czasu przechowywania w pamięci podręcznej nie może przekraczać 24 godzin.

Ważne: klient NIE MOŻE zakładać, że serwer zwróci taki sam czas trwania pamięci podręcznej dla wszystkich odpowiedzi. W zależności od sytuacji serwer MOŻE wybrać różne czasy przechowywania w pamięci podręcznej dla różnych odpowiedzi.

Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku, kończący się cyfrą „s”. Przykład: "3.5s".

FullHash

Pełny hasz identyfikowany z co najmniej jednym dopasowaniem.

Zapis JSON
{
  "fullHash": string,
  "fullHashDetails": [
    {
      object (FullHashDetail)
    }
  ]
}
Pola
fullHash

string (bytes format)

Pasujący pełny hasz. Jest to identyfikator SHA256. Będzie on miał dokładnie 32 bajty.

Ciąg zakodowany w formacie base64.

fullHashDetails[]

object (FullHashDetail)

Lista nieuporządkowana. Pole powtarzane identyfikujące szczegóły dotyczące tego pełnego hasza.

FullHashDetail

Szczegółowe informacje o pasującym pełnym haszie.

Ważna uwaga na temat zgodności z przekierowywaniem: serwer w dowolnym momencie może dodawać nowe typy zagrożeń i atrybuty zagrożeń. takie dodatki są uznawane za drobne zmiany w wersji. Zasadą obsługi wersji jest zasady Google, które nie ujawniają numerów wersji podrzędnych w interfejsach API (zasady obsługi wersji znajdziesz na stronie https://cloud.google.com/apis/design/versioning), dlatego klienty MUSZĄ być przygotowane na otrzymywanie komunikatów typu FullHashDetail zawierających wartości wyliczeniowe ThreatType lub ThreatAttribute wartości wyliczeniowe uznane przez klienta za nieprawidłowe. Dlatego to klient odpowiada za sprawdzenie poprawności wszystkich wartości wyliczeniowych ThreatType i ThreatAttribute. Jeśli którakolwiek wartość zostanie uznana za nieprawidłową, klient MUSI zignorować całą wiadomość FullHashDetail.

Zapis JSON
{
  "threatType": enum (ThreatType),
  "attributes": [
    enum (ThreatAttribute)
  ]
}
Pola
threatType

enum (ThreatType)

Typ zagrożenia. To pole nigdy nie będzie puste.

attributes[]

enum (ThreatAttribute)

Lista nieuporządkowana. Dodatkowe atrybuty związane z tymi pełnymi haszami. To pole może być puste.

ThreatType

Rodzaje zagrożeń.

Wartości w polu enum
THREAT_TYPE_UNSPECIFIED Nieznany typ zagrożenia. Jeśli serwer zwróci taką wartość, klient całkowicie zignoruje zamykający element FullHashDetail.
MALWARE

Typ zagrożenia związanego ze złośliwym oprogramowaniem. Termin „złośliwe oprogramowanie” odnosi się do programów komputerowych lub aplikacji mobilnych zaprojektowanych specjalnie w celu zaszkodzenia użytkownikom lub zakłócania pracy komputera, urządzenia mobilnego bądź zainstalowanych na nim aplikacji. Działanie złośliwego oprogramowania objawia się instalowaniem programów bez zgody użytkownika lub instalowaniem szkodliwych aplikacji, np. wirusów.

Więcej informacji znajdziesz tutaj.

SOCIAL_ENGINEERING

Typ zagrożenia typu inżynieria społeczna. Strony stosujące inżynierię społeczną fałszywie podają się, że działają w imieniu osoby trzeciej, z zamiarem wprowadzenia widzów w błąd, aby wykonali działanie, do którego mógłby ufać jedynie prawdziwy agent tej osoby trzeciej. Wyłudzanie informacji to rodzaj inżynierii społecznej, w którym użytkownik podstępem nakłania widzów do wykonania określonej czynności polegającej na przesłaniu informacji, np. danych logowania.

Więcej informacji znajdziesz tutaj.

UNWANTED_SOFTWARE Niechciany typ zagrożenia oprogramowania. Niechciane oprogramowanie to takie, które nie jest zgodne z zasadami Google dotyczącymi oprogramowania, ale nie jest złośliwym oprogramowaniem.
POTENTIALLY_HARMFUL_APPLICATION Potencjalnie szkodliwy typ zagrożeń dla aplikacji używanych przez Google Play Protect w Sklepie Play.

ThreatAttribute

Atrybuty zagrożeń. Te atrybuty mogą nadawać konkretnemu zagrożeniu dodatkowe znaczenie, ale nie mają wpływu na jego typ. Na przykład atrybut może określać niższy poziom ufności, a inny atrybut – wyższy poziom ufności. W przyszłości możemy dodać więcej atrybutów.

Wartości w polu enum
THREAT_ATTRIBUTE_UNSPECIFIED Nieznany atrybut. Jeśli serwer zwróci taką wartość, klient całkowicie zignoruje zamykający element FullHashDetail.
CANARY Wskazuje, że obiekt threatType nie powinien być używany do egzekwowania.
FRAME_ONLY Wskazuje, że threatType powinien być używany tylko do egzekwowania zasad w ramkach.