Almacenamiento y cookies

Las extensiones pueden almacenar cookies y acceder a las APIs de almacenamiento web de manera similar a un sitio web normal. Sin embargo, en algunos casos, se comportan de manera diferente en las extensiones.

Consulta browser.storage para obtener información sobre la API de extensión.

Almacenamiento

A menudo, es conveniente usar las APIs de almacenamiento de la plataforma web en las extensiones. En esta sección, se explora el comportamiento de estas APIs en el contexto de una extensión, que a veces puede diferir de su comportamiento en la Web.

Persistencia

El almacenamiento de la extensión no se borra cuando un usuario borra los datos de navegación. Esto se aplica a todos los datos almacenados con las APIs de almacenamiento web (como Local Storage y IndexedDB).

De forma predeterminada, las extensiones están sujetas a las restricciones de cuota normales en el almacenamiento, que se pueden verificar llamando a navigator.storage.estimate(). El almacenamiento también se puede desalojar bajo una gran presión de memoria, aunque esto es poco común. Para evitar esto, haz lo siguiente:

  • Solicita el permiso "unlimitedStorage", que afecta a las APIs de almacenamiento web y de extensiones, y exime a las extensiones de las restricciones de cuota y el desalojo.
  • Llama al navigator.storage.persist() para obtener protección contra el desalojo.

El almacenamiento de la extensión se comparte en el origen de la extensión, lo que incluye el service worker de la extensión, las páginas de la extensión (incluidos los elementos emergentes y el panel lateral) y los documentos fuera de pantalla. En las secuencias de comandos de contenido, llamar a las APIs de almacenamiento web accede a los datos de la página host en la que se inserta la secuencia de comandos de contenido, y no a la extensión.

Acceso en Service Workers

Se puede acceder a las APIs de IndexedDB y Cache Storage en los service workers. Sin embargo, Local Storage y Session Storage no lo son.

Si necesitas acceder a Local Storage o Session Storage desde el service worker, usa un documento fuera de pantalla.

Partición

La partición es el lugar donde se introducen claves para los datos almacenados con el objetivo de limitar dónde se puede acceder a ellos. Históricamente, el almacenamiento se indexó por origen.

A partir de Chrome 115, la partición de almacenamiento introduce cambios en la forma en que se definen las claves de partición para evitar ciertos tipos de seguimiento entre sitios. En la práctica, esto significa que, si el sitio A incorpora un iframe que contiene el sitio B, el sitio B no podrá acceder al mismo almacenamiento al que accedería normalmente si se navegara directamente a él.

Para mitigar el impacto de esto en las extensiones, se aplican dos exenciones:

  • Si una página con el esquema chrome-extension:// está incorporada en cualquier sitio, no se aplicará la partición de almacenamiento y la extensión tendrá acceso a su partición de nivel superior.
  • Si una página con el esquema chrome-extension:// incluye un iframe y la extensión tiene permisos de host para el sitio que está incorporando, ese sitio también tendrá acceso a su partición de nivel superior.

Cookies

Las cookies proporcionan una forma de almacenar pares clave-valor asociados con un dominio y una ruta específicos. Tienen un valor limitado en las extensiones, pero comprender su comportamiento puede ser útil si tienes un caso de uso específico o si incluiste un script de terceros que los usa en su implementación.

Cookies seguras

El atributo de cookie Secure solo se admite para el esquema https://. Por lo tanto, las páginas chrome-extension:// no pueden establecer cookies con este atributo.

Esto también significa que las páginas de extensión no pueden usar otros atributos de cookies en los que se requiere el atributo Secure:

Comportamiento de partición y SameSite

Las cookies establecidas en las páginas chrome-extension:// siempre usan SameSite=Lax. Por lo tanto, nunca se puede acceder a las cookies establecidas por una extensión en su propio origen en los marcos, y la partición no es relevante.

En el caso de las cookies asociadas con sitios de terceros, como las de un sitio de terceros cargado en un marco de una página de extensión o una solicitud realizada desde una página de extensión a un origen de terceros, las cookies se comportan de la misma manera que en la Web, excepto en dos casos:

  • Las cookies de terceros nunca se bloquean, ni siquiera en los submarcos, si la página de nivel superior de una pestaña determinada es una página chrome-extension://.
  • Las solicitudes de una extensión a un tercero se tratan como del mismo sitio si la extensión tiene permisos de host para el tercero. Esto significa que se pueden enviar cookies de SameSite=Strict. Ten en cuenta que esto solo se aplica a las solicitudes de red, no al acceso a través de document.cookie en JavaScript, y no se aplica si se bloquean las cookies de terceros.

Ten en cuenta que la configuración relacionada con las cookies de terceros se ve afectada por el trabajo de Privacy Sandbox y se ajusta según su cronograma.

La API de browser.cookies proporciona control sobre la clave de partición que se usará con cada método de la API. Para obtener más información, consulta la referencia de la API.