Lokalne bazy danych

Ten dokument dotyczy tej metody: Update API (v4): threatListUpdates.fetch.

Konfiguracja bazy danych

Klienci korzystający z interfejsu Update API muszą skonfigurować lokalną bazę danych i wstępnie pobrać listy Bezpiecznego przeglądania, z którymi chcą współpracować. Aby rozpocząć, możesz skompilować i wdrożyć pakiet safebrowsing Go (lub wykorzystać go do modelowania własnej implementacji). Więcej informacji znajdziesz na stronie https://github.com/google/safebrowsing/.

Aktualizacje bazy danych

Aby zapewnić ochronę przed najnowszymi zagrożeniami, zdecydowanie zalecamy klientom regularne aktualizowanie lokalnych list Bezpiecznego przeglądania przy użyciu metody threatListUpdates.fetch. Żądanie „threatListUpdates.fetch” określa listy do zaktualizowania. Jeśli klient ma ograniczenia pamięci lub przepustowości, mogą też użyć żądania do ustawienia ograniczeń aktualizacji (zobacz Aktualizacja ograniczeń). Odpowiedź threatListUpdates.fetch zwraca pełną lub częściową aktualizację dla każdej listy, zgodnie z opisem poniżej.

Pełne aktualizacje

Pełne aktualizacje są zwracane, gdy klient pozostawi pole state w żądaniu threatListUpdates.fetch puste lub gdy serwer ustali, że wymagana jest pełna aktualizacja. W przypadku pełnych aktualizacji zwracane są tylko dodania. Przed wprowadzeniem aktualizacji i przeprowadzeniem testu poprawności klient wyczyści lokalną bazę danych.

Pusty stan

Pełne aktualizacje są zwracane, gdy klient wysyła wstępne żądanie listy. W tym przypadku pole state w żądaniu jest puste (ponieważ nie ma wartości do podania), a pole newClientState w odpowiedzi zwraca stan początkowy listy lokalnej. Pełne aktualizacje są też zwracane, gdy klient celowo pozostawia pole state puste przy kolejnych żądaniach. Wymusi to pełną aktualizację i zwróci nowy stan w polu newClientState odpowiedzi.

Decyzja dotycząca serwera

Czasami serwer Bezpiecznego przeglądania zwraca pełną aktualizację, gdy klient zażądał tylko częściowej aktualizacji. Może się tak zdarzyć, gdy klient początkowo pobierze małą wersję listy, a potem zaktualizuje ją do większej wersji. Serwer po prostu zwróci pełną aktualizację z całą listą. Może się tak również zdarzyć, jeśli klient nie pobierał danych od dłuższego czasu i żąda częściowej aktualizacji. W kolejności serwer po prostu zwróci pełną aktualizację z całą listą.

Częściowe aktualizacje

Częściowe aktualizacje są zwracane, gdy klient poda wartość pola state w żądaniu threatListUpdates.fetch (wyjątek, jak wspomniano powyżej, polega na tym, że serwer określa, że wymagana jest pełna aktualizacja). W przypadku aktualizacji częściowych zwracane są zarówno dodania, jak i usunięcia. Klient aktualizuje listy w lokalnej bazie danych (stosując usunięcie przed dodaniem nowych elementów), a następnie przeprowadza weryfikację.

Dodane

Są to prefiksy skrótów SHA256, które należy dodać do lokalnej bazy danych. Zdecydowana większość prefiksów ma 4 bajty, ale niektóre prefiksy mogą mieć od 4 do 32 bajtów. W związku z tym może zostać zwróconych wiele zbiorów dodatków, np. jeden zawierający prefiksy 4-bajtowe, a drugi zawierający prefiksy 5-bajtowe.

Jeśli klient obsługuje kompresję, odpowiedź może być skompresowana za pomocą kompresji Rice. Kompresowane są jednak tylko 4-bajtowe prefiksy skrótu. Dłuższe prefiksy skrótu są zawsze wysyłane w nieskompresowanym, nieprzetworzonym formacie (patrz Kompresja).

Usunięcia

Usunięcia to indeksy liczone od zera w posortowanej leksykograficznie bazie danych klienta wskazujące wpisy, które powinny zostać usunięte z lokalnej bazy danych. Zwrócony zostanie tylko jeden zestaw usunięć.

Jeśli klient obsługuje kompresję, zwracane są „hasze ryżowe” i „indeksy ryżu”. Jeśli kompresja nie jest obsługiwana, zwracane są „nieprzetworzone hasze” i „indeksy nieprzetworzone” (patrz Kompresja).

Weryfikacja

Po zwróceniu threatListUpdates.fetch (w ramach pełnej lub częściowej aktualizacji) klient powinien przeprowadzić sprawdzenie poprawności.

Klient najpierw aktualizuje listy w lokalnej bazie danych (stosując usunięcie przed dodaniem nowych elementów). Klient oblicza następnie hasz SHA256 dla (posortowanej leksykograficznie) listy lokalnej i porównuje go z sumą kontrolną zwróconą w odpowiedzi. Jeśli te 2 wartości są równe, lista Bezpieczne przeglądanie jest uznawana za „prawidłową”.

Jeśli te dwie wartości nie są równe, lista Bezpieczne przeglądanie jest uznawana za „uszkodzoną”. Klient musi wyczyścić listę w bazie danych i ponownie wykonać drugą aktualizację, podając w polu state pusty ciąg znaków. Wymusi to pełną aktualizację oraz zwróci zupełnie nową listę i stan.