Usar a API Update
Vista geral
A API Update permite que as suas aplicações cliente transfiram versões com hash das listas do Web Risk para armazenamento numa base de dados local ou na memória. Em seguida, os URLs podem ser verificados localmente. Quando é encontrada uma correspondência na base de dados local, o cliente envia um pedido aos servidores do Web Risk para verificar se o URL está incluído nas listas do Web Risk.
Atualizar a base de dados local
Para se manterem atualizados, os clientes têm de atualizar periodicamente as listas do Web Risk na respetiva base de dados local. Para poupar largura de banda, os clientes transferem os prefixos de hash dos URLs em vez dos URLs não processados. Por exemplo, se "www.badurl.com/" estiver numa lista de risco na Web, os clientes transferem o prefixo de hash SHA256 desse URL em vez do próprio URL. Na maioria dos casos, os prefixos de hash têm 4 bytes de comprimento, o que significa que o custo médio da largura de banda de transferir uma única entrada da lista é de 4 bytes antes da compressão.
Para atualizar as listas do Web Risk na base de dados local, envie um pedido HTTP
GET
para o método
threatLists.computeDiff
:
- O pedido
GET
HTTP inclui o nome da lista a atualizar, juntamente com restrições do cliente para ter em conta as limitações de memória e largura de banda. - A resposta HTTP
GET
devolve uma atualização completa ou uma atualização parcial. A resposta também pode devolver um tempo de espera recomendado até à próxima operação de cálculo de diferenças.
Exemplo: threatLists.computeDiff
Pedido HTTP GET
No exemplo seguinte, são pedidas as diferenças para a lista de risco na Web de SOFTWARE MALICIOSO. Para mais detalhes, consulte os
threatLists.computeDiff
parâmetros de consulta
e as explicações que se seguem ao exemplo de código.
Método HTTP e URL:
GET https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
"https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY"
PowerShell
Execute o seguinte comando:
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "recommendedNextDiff": "2020-01-08T19:41:45.436722194Z", "responseType": "RESET", "additions": { "rawHashes": [ { "prefixSize": 4, "rawHashes": "AArQMQAMoUgAPn8lAE..." } ] }, "newVersionToken": "ChAIARAGGAEiAzAwMSiAEDABEPDyBhoCGAlTcIVL", "checksum": { "sha256": "wy6jh0+MAg/V/+VdErFhZIpOW+L8ulrVwhlV61XkROI=" } }
Java
Python
Listas do Web Risk
O campo threatType
identifica a lista de risco na Web. No exemplo, são pedidas as diferenças para a lista de risco na Web de SOFTWARE MALICIOSO.
Token de versão
O campo versionToken
contém o estado atual do cliente da lista de
riscos na Web.
Os tokens de versão são devolvidos no campo newVersionToken
da resposta threatLists.computeDiff.
Para atualizações iniciais, deixe o campo versionToken
vazio.
Restrições de tamanho
O campo maxDiffEntries
especifica o número total de atualizações que o cliente pode gerir (no exemplo, 2048). O campo maxDatabaseEntries
especifica o número total de entradas que a base de dados local pode gerir (no exemplo, 4096). Os clientes devem definir restrições de tamanho para proteger a memória e as limitações de largura de banda, bem como para se salvaguardarem contra o crescimento das listas. Para mais informações, consulte o artigo Restrições de atualização).
Compressões suportadas
O campo supportedCompressions
lista os tipos de compressão suportados pelo cliente. No exemplo, o cliente suporta apenas dados não processados e não comprimidos.
No entanto, o Web Risk suporta tipos de compressão adicionais. Para mais
informações, consulte o artigo Compressão.
Resposta HTTP GET
Neste exemplo, a resposta devolve uma atualização parcial da lista de riscos Web com o tipo de compressão pedido.
Corpo da resposta
O corpo da resposta inclui as informações de diferenças (o tipo de resposta, as adições e as remoções a aplicar à base de dados local, o novo token de versão e uma soma de verificação).
No exemplo, a resposta também inclui um
tempo de diferença seguinte recomendado. Para mais detalhes, consulte o
threatLists.computeDiff
corpo da resposta
e as explicações que se seguem ao exemplo de código.
{ "responseType" : "DIFF", "recommendedNextDiff": "2019-12-31T23:59:59.000000000Z", "additions": { "compressionType": "RAW", "rawHashes": [{ "prefixSize": 4, "rawHashes": "rnGLoQ==" }] }, "removals": { "rawIndices": { "indices": [0, 2, 4] } }, "newVersionToken": "ChAIBRADGAEiAzAwMSiAEDABEAFGpqhd", "checksum": { "sha256": "YSgoRtsRlgHDqDA3LAhM1gegEpEzs1TjzU33vqsR8iM=" }, "recommendedNextDiff": "2019-07-17T15:01:23.045123456Z" }
Diferenças da base de dados
O campo responseType
indica uma atualização parcial (DIFF
) ou total (RESET
). No exemplo, são devolvidas diferenças parciais, pelo que a resposta inclui adições e remoções. Pode haver vários conjuntos de adições, mas apenas um conjunto de remoções. Para mais informações, consulte o artigo
Diferenças entre bases de dados.
Token da nova versão
O campo newVersionToken
contém o token da nova versão da lista de
riscos na Web recentemente atualizada. Os clientes têm de guardar o novo estado do cliente para pedidos de atualização subsequentes (o campo versionToken
no pedido threatLists.computeDiff
).
Somas de verificação
A soma de verificação permite que os clientes verifiquem se a base de dados local não sofreu nenhuma corrupção. Se a soma de verificação não corresponder, o cliente tem de limpar a base de dados e reemitir uma atualização com um campo versionToken
vazio. No entanto, os clientes nesta situação têm de seguir os intervalos de tempo para atualizações. Para mais
informações, consulte o artigo Frequência de pedidos.
Próxima diferença recomendada
O campo recommendedNextDiff
indica uma data/hora até à qual o cliente deve aguardar antes de enviar outro pedido de atualização. Tenha em atenção que o período de espera recomendado pode ou não estar incluído na resposta. Para mais detalhes,
consulte Frequência de pedidos.
A verificar os URLs
Para verificar se um URL está numa lista do Web Risk, o cliente tem de calcular primeiro o hash e o prefixo de hash do URL. Para ver detalhes, consulte o artigo URLs e hash. Em seguida, o cliente consulta a base de dados local para determinar se existe uma correspondência. Se o prefixo hash não estiver presente na base de dados local, o URL é considerado seguro (ou seja, não está nas listas de risco na Web).
Se o prefixo de hash estiver presente na base de dados local (uma colisão de prefixos de hash), o cliente tem de enviar o prefixo de hash para os servidores do Web Risk para validação. Os servidores devolvem todos os hashes SHA 256 de comprimento total que contêm o prefixo de hash fornecido. Se um desses hashes de comprimento total corresponder ao hash de comprimento total do URL em questão, o URL é considerado não seguro. Se nenhum dos hashes de comprimento total corresponder ao hash de comprimento total do URL em questão, esse URL é considerado seguro.
Em nenhum momento, a Google fica a conhecer os URLs que está a examinar. A Google aprende os prefixos hash dos URLs, mas os prefixos hash não fornecem muitas informações sobre os URLs reais.
Para verificar se um URL está numa lista de risco na Web, envie um pedido HTTP GET
para o método hashes.search
:
- O pedido
GET
HTTP inclui o prefixo hash do URL a verificar. - A resposta HTTP
GET
devolve os hashes de comprimento total correspondentes juntamente com os prazos de validade positivos e negativos.
Exemplo: hashes.search
Pedido HTTP GET
No exemplo seguinte, os nomes de duas listas de risco na Web e um prefixo de hash são enviados para comparação e validação. Para mais detalhes, consulte os
hashes.search
parâmetros de consulta
e as explicações que se seguem ao exemplo de código.
curl \ -H "Content-Type: application/json" \ "https://webrisk.googleapis.com/v1/hashes:search?key=YOUR_API_KEY&threatTypes=MALWARE&threatTypes=SOCIAL_ENGINEERING&hashPrefix=WwuJdQ%3D%3D"
Java
Python
Listas do Web Risk
O campo threatTypes
identifica as listas de risco na Web. No exemplo, são identificadas duas listas: MALWARE
e SOCIAL_ENGINEERING
.
Prefixos hash de ameaças
O campo hashPrefix
contém o prefixo hash do URL que quer verificar. Este campo tem de conter o prefixo de hash exato presente na base de dados local. Por exemplo, se o prefixo da hash local tiver 4 bytes, o campo hashPrefix
tem de ter 4 bytes. Se o prefixo hash local tiver sido aumentado para 7 bytes, o campo hashPrefix
tem de ter 7 bytes.
Resposta HTTP GET
No exemplo seguinte, a resposta devolve as ameaças correspondentes, contendo as listas do Web Risk com as quais estabeleceram correspondência, juntamente com as horas de expiração.
Corpo da resposta
O corpo da resposta inclui as informações de correspondência (os nomes das listas, os hashes de comprimento total e as durações da cache). Para mais detalhes, consulte o
hashes.search
corpo da resposta
e as explicações que se seguem ao exemplo de código.
{ "threats": [{ "threatTypes": ["MALWARE"], "hash": "WwuJdQx48jP-4lxr4y2Sj82AWoxUVcIRDSk1PC9Rf-4=" "expireTime": "2019-07-17T15:01:23.045123456Z" }, { "threatTypes": ["MALWARE", "SOCIAL_ENGINEERING"], "hash": "WwuJdQxaCSH453-uytERC456gf45rFExcE23F7-hnfD=" "expireTime": "2019-07-17T15:01:23.045123456Z" }, }], "negativeExpireTime": "2019-07-17T15:01:23.045123456Z" }
Correspondências
O campo threats
devolve hashes completos correspondentes para o prefixo de hash.
Os URLs correspondentes a estes hashes são considerados não seguros. Se não for encontrada nenhuma correspondência para um prefixo de hash, não é devolvido nada. O URL correspondente a esse prefixo de hash é considerado seguro.
Hora de validade
Os campos expireTime
e negativeExpireTime
indicam até quando os hashes devem ser considerados, respetivamente, inseguros ou seguros. Para mais detalhes,
consulte a secção Colocação em cache.