Database locali
Questo documento si applica al seguente metodo: API Update.
Configurazione del database
I client che utilizzano l'API Update devono configurare un database locale ed eseguire un primo download degli elenchi di Web Risk con cui vogliono lavorare. Per ulteriori informazioni su come eseguire il recupero iniziale, consulta la sezione Aggiornamenti completi di seguito.
Aggiornamenti del database
Per garantire la protezione dalle minacce più recenti, i clienti sono vivamente invitati a aggiornare regolarmente i propri elenchi locali di rischi web utilizzando il metodo threatLists.computeDiff
.
La richiesta threatLists.computeDiff
specifica l'elenco da aggiornare. Se i client hanno limitazioni di memoria o larghezza di banda, possono utilizzare la richiesta anche per impostare vincoli di aggiornamento (consulta Vincoli di aggiornamento).
threatLists.computeDiff response
restituisce un aggiornamento completo o parziale per ogni elenco, come spiegato di seguito.
Aggiornamenti completi
Gli aggiornamenti completi vengono restituiti quando il client lascia vuoto il campo versionToken
nella
richiesta threatLists.computeDiff
o quando il server determina che è necessario un aggiornamento completo. Per gli aggiornamenti completi, vengono restituiti solo gli aggiustamenti. Il cliente deve svuotare il database locale prima di applicare gli aggiornamenti ed eseguire la verifica di convalida.
Stato vuoto
Gli aggiornamenti completi vengono restituiti quando il client invia la richiesta iniziale di un elenco.
In questo caso, il campo versionToken
nella richiesta viene lasciato vuoto (perché non c'è alcun valore da fornire) e il campo newVersionToken
nella risposta restituisce lo stato iniziale dell'elenco locale. Gli aggiornamenti completi vengono restituiti anche quando il cliente lascia intenzionalmente vuoto il campo versionToken
nelle richieste successive. Verrà forzato un aggiornamento completo e verrà restituito un nuovo stato nel
newVersionToken
campo della risposta.
Decisione del server
A volte, il server Web Risk restituisce un aggiornamento completo quando il client ha richiesto solo un aggiornamento parziale. Ciò può accadere quando il client inizialmente scarica una versione ridotta dell'elenco e poi esegue l'aggiornamento a una versione più grande dell'elenco. Il server restituirà semplicemente un aggiornamento completo con l'intero elenco. Questo può accadere anche se il client non ha scaricato dati da molto tempo e richiede un aggiornamento parziale. Anche in questo caso, il server restituirà semplicemente un aggiornamento completo con l'intero elenco.
Aggiornamenti parziali
Gli aggiornamenti parziali vengono restituiti quando il client fornisce un valore per il
versionToken
campo nella
richiesta threatLists.computeDiff
(l'eccezione, come indicato sopra, è quando il server determina che è necessario un
versionToken
aggiornamento completo). Per gli aggiornamenti parziali, vengono restituite sia le aggiunte sia le rimozioni. Il client aggiorna gli elenchi nel database locale (applicando le rimozioni prima delle aggiunte) e poi esegue il controllo di convalida.
Aggiunte
Le aggiunte sono prefissi di hash SHA256 da aggiungere al database locale. La maggior parte dei prefissi di hash ha una lunghezza di 4 byte, ma alcuni possono avere una lunghezza compresa tra 4 e 32 byte. Pertanto, è possibile restituire più insiemi di aggiunte, ad esempio uno contenente i prefissi di 4 byte e uno contenente i prefissi di 5 byte.
Se il client supporta la compressione, la risposta può essere compressa utilizzando la compressione Rice. Tuttavia, vengono compressi solo i prefissi degli hash di 4 byte. I prefissi di hash più lunghi vengono sempre inviati in formato non compresso e non elaborato. Per maggiori dettagli, consulta la sezione relativa alla compressione.
Rimozioni
Le rimozioni sono indici a partire da zero nel database client ordinato in ordine alfabetico che fanno riferimento alle voci da rimuovere dal database locale. Verrà restituito un solo insieme di rimozioni.
Se il client supporta la compressione, vengono restituiti "hash di riso" e "indici di riso". Se la compressione non è supportata, vengono restituiti "hash non elaborati" e "indici non elaborati". Per maggiori dettagli, consulta Compressione/web-risk/docs/compression).
Controlli di convalida
Quando viene restituita la risposta threatLists.computeDiff
con un aggiornamento completo o parziale, il cliente deve eseguire un controllo di convalida.
Il client aggiorna prima gli elenchi nel database locale (applicando le rimozioni prima delle aggiunte). Il client calcola quindi l'hash SHA256 dell'elenco locale (ordinato in ordine alfabetico) e lo confronta con il checksum restituito nella risposta. Se i due valori sono uguali, l'elenco dei rischi web è considerato "corretto".
Se i due valori non sono uguali, l'elenco dei rischi web è considerato "corrotto". Il cliente deve cancellare l'elenco dal database e emettere un secondo
aggiornamento con il campo versionToken
impostato sulla stringa vuota. In questo modo verrà forzato un
aggiornamento completo e verranno restituiti un elenco e uno stato nuovi di zecca.