Wenn Clients Google Safe Browsing v5 im Echtzeitmodus verwenden, führen sie in ihrer lokalen Datenbank Folgendes: (i) einen globalen Cache mit wahrscheinlich harmlosen Websites, formatiert als SHA256-Hashes von Host-Suffix-/Pfad-Präfix-URL-Ausdrücken, (ii) eine Reihe von Bedrohungslisten, formatiert als SHA256-Hash-Präfixe von Host-Suffix-/Pfad-Präfix-URL-Ausdrücken. Wenn der Client eine bestimmte URL prüfen möchte, wird zuerst eine lokale Prüfung mit dem globalen Cache durchgeführt. Wenn diese Prüfung bestanden wird, wird eine lokale Prüfung der Bedrohungslisten durchgeführt. Andernfalls fährt der Client mit der Echtzeit-Hash-Prüfung fort, wie unten beschrieben.
Neben der lokalen Datenbank wird auf dem Client ein lokaler Cache verwaltet. Ein solcher lokaler Cache muss nicht in einem persistenten Speicher sein und kann bei Speichermangel gelöscht werden.
Eine detaillierte Spezifikation des Verfahrens finden Sie unten.
Ablauf der URL-Prüfung in Echtzeit
Diese Prozedur verwendet eine einzelne URL u und gibt SAFE, UNSAFE oder UNSURE zurück. Wenn SAFE zurückgegeben wird, gilt die URL gemäß Google Safe Browsing als sicher. Wenn UNSAFE zurückgegeben wird, wird die URL von Google Safe Browsing als potenziell unsicher eingestuft. Es sollten entsprechende Maßnahmen ergriffen werden, z. B. dem Endnutzer eine Warnung angezeigt, eine empfangene Nachricht in den Spamordner verschoben oder eine zusätzliche Bestätigung durch den Nutzer angefordert werden, bevor fortgefahren wird. Wenn UNSURE zurückgegeben wird, sollte anschließend das folgende Verfahren für die lokale Überprüfung verwendet werden.
- Sei
expressionseine Liste von Suffix-/Präfixausdrücken, die von der URLugeneriert werden. - Sei
expressionHasheseine Liste, deren Elemente SHA256-Hashes der einzelnen Ausdrücke inexpressionssind. - Für jede
hashvonexpressionHashes:- Wenn
hashim globalen Cache gefunden wird, wirdUNSUREzurückgegeben.
- Wenn
- Sei
expressionHashPrefixeseine Liste, deren Elemente die ersten 4 Byte jedes Hashs inexpressionHashessind. - Für jede
expressionHashPrefixvonexpressionHashPrefixes:expressionHashPrefixim lokalen Cache nachschlagen- Wenn der Cache-Eintrag gefunden wird:
- Prüfen Sie, ob die aktuelle Zeit nach der Ablaufzeit liegt.
- Wenn der Wert größer ist:
- Entfernen Sie den gefundenen Cache-Eintrag aus dem lokalen Cache.
- Fahren Sie mit der Schleife fort.
- Wenn er nicht größer ist:
- Entfernen Sie diese
expressionHashPrefixausexpressionHashPrefixes. - Prüfen Sie, ob der entsprechende vollständige Hash innerhalb von
expressionHashesim Cache-Eintrag gefunden wird. - Wenn gefunden, wird
UNSAFEzurückgegeben. - Wenn er nicht gefunden wird, fahren Sie mit der Schleife fort.
- Entfernen Sie diese
- Wenn der Cache-Eintrag nicht gefunden wird, wird die Schleife fortgesetzt.
- Senden Sie
expressionHashPrefixesmit RPC SearchHashes oder der REST-Methode hashes.search an den Google Safe Browsing v5-Server. Wenn ein Fehler aufgetreten ist (einschließlich Netzwerkfehler, HTTP-Fehler usw.), gibUNSUREzurück. Andernfalls sei die Antwort dieresponse, die vom Safe Browsing-Server empfangen wurde. Das ist eine Liste mit vollständigen Hashes zusammen mit einigen Zusatzinformationen, die die Art der Bedrohung (Social Engineering, Malware usw.) sowie die Cache-Ablaufzeitexpirationangeben. - Für jede
fullHashvonresponse:- Füge
fullHashzusammen mitexpirationin den lokalen Cache ein.
- Füge
- Für jede
fullHashvonresponse:- Sei
isFounddas Ergebnis der Suche nachfullHashinexpressionHashes. - Wenn
isFound„False“ ist, wird die Schleife fortgesetzt. - Wenn
isFound„True“ ist, wirdUNSAFEzurückgegeben.
- Sei
- Rückflug
SAFE.
Dieses Protokoll gibt zwar an, wann der Client expressionHashPrefixes an den Server sendet, aber es wird bewusst nicht genau festgelegt, wie sie gesendet werden. Es ist beispielsweise zulässig, dass der Client alle expressionHashPrefixes in einer einzigen Anfrage sendet. Es ist auch zulässig, dass der Client jedes einzelne Präfix in expressionHashPrefixes in separaten Anfragen an den Server sendet (möglicherweise parallel). Es ist auch zulässig, dass der Client zusammen mit den Hash-Präfixen in expressionHashPrefixes nicht verwandte oder zufällig generierte Hash-Präfixe sendet, sofern die Anzahl der in einer einzelnen Anfrage gesendeten Hash-Präfixe 30 nicht überschreitet.