Lorsque les clients choisissent d'utiliser la navigation sécurisée Google v5 en mode temps réel, ils conservent dans leur base de données locale : (i) un cache global des sites probablement fiables, mis en forme sous forme de hachages SHA256 des expressions d'URL de suffixe d'hôte/préfixe de chemin d'accès, (ii) un ensemble de listes de menaces, mis en forme sous forme de préfixes de hachage SHA256 des expressions d'URL de suffixe d'hôte/préfixe de chemin d'accès. L'idée générale est que chaque fois que le client souhaite vérifier une URL spécifique, une vérification locale est effectuée à l'aide du cache global. Si cette vérification réussit, une vérification des listes de menaces locales est effectuée. Sinon, le client poursuit la vérification du hachage en temps réel, comme indiqué ci-dessous.
En plus de la base de données locale, le client conservera un cache local. Ce cache local n'a pas besoin d'être dans un stockage persistant et peut être effacé en cas de pression sur la mémoire.
Vous trouverez ci-dessous une description détaillée de la procédure.
Procédure de vérification des URL en temps réel
Cette procédure prend une seule URL u et renvoie SAFE, UNSAFE ou UNSURE. Si elle renvoie SAFE, l'URL est considérée comme sécurisée par la navigation sécurisée Google. Si la réponse est UNSAFE, l'URL est considérée comme potentiellement dangereuse par la navigation sécurisée de Google. Vous devez alors prendre les mesures appropriées, par exemple afficher un avertissement à l'utilisateur final, déplacer un message reçu dans le dossier de spams ou demander à l'utilisateur une confirmation supplémentaire avant de continuer. Si la valeur renvoyée est UNSURE, la procédure de vérification locale suivante doit être utilisée.
- Soit
expressionsune liste d'expressions de suffixe/préfixe générées par l'URLu. - Soit
expressionHashesune liste dont les éléments sont les hachages SHA256 de chaque expression dansexpressions. - Pour chaque
hashdeexpressionHashes:- Si
hashest introuvable dans le cache global, renvoieUNSURE.
- Si
- Soit
expressionHashPrefixesune liste dont les éléments sont les quatre premiers octets de chaque hachage dansexpressionHashes. - Pour chaque
expressionHashPrefixdeexpressionHashPrefixes:- Recherchez
expressionHashPrefixdans le cache local. - Si l'entrée en cache est trouvée :
- Déterminez si l'heure actuelle est postérieure à son heure d'expiration.
- Si elle est supérieure :
- Supprime l'entrée mise en cache trouvée du cache local.
- Continuez avec la boucle.
- Si elle n'est pas supérieure :
- Supprimez ce
expressionHashPrefixdeexpressionHashPrefixes. - Vérifiez si le hachage complet correspondant dans
expressionHashesse trouve dans l'entrée mise en cache. - Si elle est trouvée, renvoie
UNSAFE. - Si vous ne le trouvez pas, continuez la boucle.
- Supprimez ce
- Si l'entrée mise en cache est introuvable, poursuivez la boucle.
- Recherchez
- Envoyez
expressionHashPrefixesau serveur Google Navigation sécurisée v5 à l'aide de RPC SearchHashes ou de la méthode REST hashes.search. Si une erreur s'est produite (y compris des erreurs réseau, des erreurs HTTP, etc.), renvoyezUNSURE. Sinon, la réponse est leresponsereçu du serveur SB, qui est une liste de hachages complets avec des informations auxiliaires identifiant la nature de la menace (ingénierie sociale, logiciel malveillant, etc.), ainsi que le délai d'expiration du cacheexpiration. - Pour chaque
fullHashderesponse:- Insérez
fullHashdans le cache local, ainsi queexpiration.
- Insérez
- Pour chaque
fullHashderesponse:- Soit
isFoundle résultat de la recherche defullHashdansexpressionHashes. - Si
isFoundest défini sur "False", la boucle continue. - Si
isFoundest "true", renvoieUNSAFE.
- Soit
- Renvoyez
SAFE.
Bien que ce protocole spécifie quand le client envoie expressionHashPrefixes au serveur, il ne spécifie pas exactement comment les envoyer. Par exemple, le client peut envoyer tous les expressionHashPrefixes dans une seule requête, ou envoyer chaque préfixe individuel dans expressionHashPrefixes au serveur dans des requêtes distinctes (éventuellement en parallèle). Le client peut également envoyer des préfixes de hachage non liés ou générés de manière aléatoire avec les préfixes de hachage dans expressionHashPrefixes, à condition que le nombre de préfixes de hachage envoyés dans une seule requête ne dépasse pas 30.