Bases de datos locales

Este documento se aplica al siguiente método: Update API.

Configuración de la base de datos

Los clientes que usen la API Update deben configurar una base de datos local y descargar inicialmente las listas de Web Risk con las que quieran trabajar. Consulta la sección Actualizaciones completas que aparece más abajo para obtener más información sobre cómo realizar la primera obtención.

Actualizaciones de bases de datos

Para garantizar la protección frente a las amenazas más recientes, se recomienda encarecidamente a los clientes que actualicen periódicamente sus listas locales de Web Risk mediante el método threatLists.computeDiff.

La solicitud threatLists.computeDiff especifica la lista que se va a actualizar. Si los clientes tienen limitaciones de memoria o de ancho de banda, también pueden usar la solicitud para definir restricciones de actualización (consulta Restricciones de actualización).

threatLists.computeDiff response devuelve una actualización completa o parcial de cada lista, como se explica a continuación.

Actualizaciones completas

Las actualizaciones completas se devuelven cuando el cliente deja el campo versionToken en la solicitud threatLists.computeDiff vacío o cuando el servidor determina que se requiere una actualización completa. Para ver todas las actualizaciones, solo se devuelven las adiciones. El cliente debe borrar la base de datos local antes de aplicar las actualizaciones y realizar la comprobación de validación.

Estado vacío

Las actualizaciones completas se devuelven cuando el cliente envía la solicitud inicial de una lista. En este caso, el campo versionToken de la solicitud se deja vacío (porque no hay ningún valor que proporcionar) y el campo newVersionToken de la respuesta devuelve el estado inicial de la lista local. También se devuelven actualizaciones completas cuando el cliente deja el campo versionToken vacío en solicitudes posteriores. De esta forma, se forzará una actualización completa y se devolverá un nuevo estado en el campo newVersionToken de la respuesta.

Decisión del servidor

En ocasiones, el servidor de Web Risk devuelve una actualización completa cuando el cliente solo ha solicitado una parcial. Esto puede ocurrir cuando el cliente descarga inicialmente una versión pequeña de la lista y, después, la actualiza a una versión más grande. En ese caso, el servidor devolverá una actualización completa con toda la lista. Esto también puede ocurrir si el cliente no ha descargado datos durante mucho tiempo y solicita una actualización parcial. En ese caso, el servidor simplemente devolverá una actualización completa con toda la lista.

Actualizaciones parciales

Las actualizaciones parciales se devuelven cuando el cliente proporciona un valor para el campo versionToken en la solicitud threatLists.computeDiff (la excepción, como se ha indicado anteriormente, es cuando el servidor determina que se requiere una actualización completa). En el caso de las actualizaciones parciales, se devuelven tanto las adiciones como las eliminaciones. El cliente actualiza las listas de la base de datos local (aplicando las eliminaciones antes de las adiciones) y, a continuación, realiza la comprobación de validación.

Adiciones

Las adiciones son prefijos de hash SHA256 que se deben añadir a la base de datos local. La mayoría de los prefijos de hash tienen una longitud de 4 bytes, pero algunos pueden tener una longitud de entre 4 y 32 bytes. Por lo tanto, se podrían devolver varios conjuntos de adiciones; por ejemplo, uno que contenga los prefijos de 4 bytes y otro que contenga los prefijos de 5 bytes.

Si el cliente admite la compresión, la respuesta se puede comprimir mediante la compresión Rice. Sin embargo, solo se comprimen los prefijos de hash de 4 bytes. Los prefijos de hash más largos siempre se envían en formato sin comprimir. Para obtener más información, consulta Compresión.

Eliminación de URL

Las eliminaciones son índices basados en cero de la base de datos de clientes ordenada lexicográficamente que apuntan a las entradas que se deben eliminar de la base de datos local. Solo se devolverá un conjunto de retiradas.

Si el cliente admite la compresión, se devuelven "hashes de arroz" e "índices de arroz". Si no se admite la compresión, se devuelven "hashes sin comprimir" e "índices sin comprimir". Para obtener más información, consulta Compresión/web-risk/docs/compression).

Comprobaciones de validación

Cuando se devuelve la threatLists.computeDiffrespuesta con una actualización completa o parcial, el cliente debe realizar una comprobación de validación.

Primero, el cliente actualiza las listas de la base de datos local (aplicando las eliminaciones antes de las adiciones). A continuación, el cliente calcula el hash SHA256 de la lista local (ordenada lexicográficamente) y lo compara con la suma de comprobación devuelta en la respuesta. Si los dos valores son iguales, se considera que la lista de Web Risk es correcta.

Si los dos valores no son iguales, se considera que la lista de Web Risk está dañada. El cliente debe borrar la lista de la base de datos y volver a enviar una segunda actualización con el campo versionToken definido como una cadena vacía. De esta forma, se forzará una actualización completa y se devolverá una lista y un estado nuevos.