Bancos de dados locais

Este documento se aplica ao seguinte método: API Update.

Configuração do banco de dados

Os clientes que usam a API Update precisam configurar um banco de dados local e realizar um download inicial das listas da Web Risk com as quais desejam trabalhar. Consulte a seção Atualizações completas abaixo para mais informações sobre como realizar a busca inicial.

Atualizações do banco de dados

Para garantir proteção contra as ameaças mais recentes, recomendamos que os clientes atualizem regularmente as listas da Web Risk locais usando o método threatLists.computeDiff.

A solicitação threatLists.computeDiff especifica a lista a ser atualizada. Se os clientes tiverem limitações de memória ou largura de banda, também poderão usar a solicitação para definir restrições de atualização (consulte Atualizar restrições).

O threatLists.computeDiff response retorna uma atualização completa ou parcial para cada lista, conforme explicado abaixo.

Atualizações completas

As atualizações completas são retornadas quando o cliente deixa o campo versionToken na solicitação listas de ameaças vazia ou quando o servidor determina que uma atualização completa é necessária. Para atualizações completas, apenas adições são retornadas. Espera-se que o cliente limpe o banco de dados local antes de aplicar as atualizações e realizar a verificação de validação.

Estado vazio

As atualizações completas são retornadas quando o cliente envia a solicitação inicial de uma lista. Nesse caso, o campo versionToken na solicitação é deixado vazio (porque não há valor a ser fornecido) e o campo newVersionToken na resposta retorna o estado inicial da lista local. As atualizações completas também são retornadas quando o cliente deixa o campo versionToken intencionalmente em solicitações subsequentes. Isso forçará uma atualização completa e retornará um novo estado no campo newVersionToken da resposta.

Decisão do servidor

Ocasionalmente, o servidor da Web Risk retorna uma atualização completa quando apenas uma atualização parcial foi solicitada pelo cliente. Isso pode acontecer quando o cliente faz o download de uma versão pequena da lista e, em seguida, atualiza para uma versão maior da lista. o servidor simplesmente retornará uma atualização completa com a lista inteira. Isso também pode acontecer se o cliente não fizer o download de dados há muito tempo e solicitar uma atualização parcial. novamente, o servidor retornará uma atualização completa com a lista inteira.

Atualizações parciais

Atualizações parciais são retornadas quando o cliente fornece um valor para o campo versionToken na solicitação threatLists.computeDiff (a exceção, conforme observado acima, é quando o servidor determina uma atualização completa). Para atualizações parciais, adições e remoções são retornadas. O cliente atualiza as listas no banco de dados local (aplicando as remoções antes das adições) e, em seguida, executa a verificação de validação.

Adições

Adições são prefixos de hash SHA256 que devem ser adicionados ao banco de dados local. A maioria dos prefixos de hash tem 4 bytes, mas alguns prefixos de hash podem ter qualquer tamanho entre 4 e 32 bytes. Portanto, vários conjuntos de adições podem ser retornados; por exemplo, um contendo os prefixos de 4 bytes e outro contendo prefixos de 5 bytes.

Se o cliente for compatível com a compactação, a resposta poderá ser compactada usando a compactação Rice. No entanto, apenas prefixos de hash de 4 bytes são compactados. Prefixos de hash mais longos são sempre enviados em formato bruto não compactado. Para mais detalhes, consulte Compactação.

Remoções

As remoções são índices baseados em zero no banco de dados do cliente classificado lexicograficamente, apontando para entradas que precisam ser removidas do banco de dados local. Apenas um conjunto de remoções será retornado.

Se o cliente for compatível com a compactação, "hashes Rice" e "índices Rice" serão retornados. Se a compactação não for compatível, "hashes brutos" e "índices brutos" serão retornados. Para mais detalhes, consulte Compactação/web-risk/docs/compression.

Verificações de validação

Quando a resposta threatLists.computeDiff é retornada; com uma atualização completa ou parcial; espera-se que o cliente realize uma verificação de validação.

O cliente atualiza primeiro as listas no banco de dados local (aplicando as remoções antes das adições). Em seguida, o cliente calcula o hash SHA256 da lista local (classificada lexicograficamente) e a compara com a soma de verificação retornada na resposta. Se os dois valores forem iguais, a lista da Web Risk será considerada "correta".

Se os dois valores não forem iguais, a lista da Web Risk será considerada "corrompida". O cliente precisa limpar a lista do banco de dados e reemitir uma segunda atualização com o campo versionToken definido como a string vazia. isso forçará uma atualização completa e retornará uma nova lista e estado.