Conceptos básicos sobre las cookies

Una cookie es un fragmento de datos almacenado en el navegador que se utiliza para conservar el estado y otra información que un sitio web necesita para ejecutar sus funciones.

Una cookie es un pequeño archivo que los sitios web almacenan en la máquina de sus usuarios, la información que almacena fluye entre el navegador y el sitio web.

Cada cookie es un par clave-valor junto con una serie de atributos que controlan cuándo y dónde se usa. Estos atributos se usan para establecer fechas de vencimiento o indicar que la cookie solo se debe enviar a través de HTTPS. Puedes configurar una cookie en un encabezado HTTP o a través de la interfaz de JavaScript.

Las cookies son uno de los métodos disponibles para agregar estados persistentes a los sitios web. A lo largo de los años, sus capacidades crecieron y evolucionaron, pero dejaron la plataforma con algunos problemas heredados y problemáticos. Para solucionar este problema, los navegadores (como Chrome, Firefox y Edge) están cambiando su comportamiento para aplicar más valores predeterminados que preservan la privacidad.

Las cookies en acción

Supongamos que tienes un blog en el que quieres mostrar una sección de "Novedades" promoción a tu usuarios. Los usuarios pueden descartar la promoción y no volver a verla por un tiempo. Puedes almacenar esa preferencia en una cookie, configurarla para que venza en un mes (2,600,000 segundos) y enviarla solo a través de HTTPS. Ese encabezado se vería esto:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
Tres cookies que se envían a un navegador desde un servidor en una respuesta
Los servidores establecen cookies con el encabezado Set-Cookie.

Cuando el lector ve una página que cumple con esos requisitos, está en una una conexión segura y la cookie tiene menos de un mes de antigüedad, enviará este encabezado en su solicitud:

Cookie: promo_shown=1
Se envían tres cookies de un navegador a un servidor en una solicitud
El navegador vuelve a enviar cookies en el encabezado Cookie.

También puedes agregar y leer las cookies disponibles para ese sitio en JavaScript usando document.cookie Si realizas una tarea a document.cookie, se creará o anular una cookie con esa clave. Por ejemplo, puedes intentar lo siguiente en tu Consola de JavaScript del navegador:

→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"

Si lees document.cookie, se mostrarán todas las cookies accesibles en la individual, con cada cookie separada por un punto y coma:

→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
JavaScript que accede a las cookies en el navegador
JavaScript puede acceder a las cookies mediante document.cookie.

Si pruebas esto en una selección de sitios populares, notarás que la mayoría de establecen muchas más que solo tres cookies. En la mayoría de los casos, esos se envían cookies en cada solicitud a ese dominio, que tiene una serie de implicancias. En tu caso, el ancho de banda de carga suele ser más restringido que el de descarga. por lo que la sobrecarga en todas las solicitudes salientes agregará una demora al primer byte. Sea conservador con respecto a la cantidad y el tamaño de las cookies que configure. Marca Uso del atributo Max-Age para garantizar que no se guarden las cookies más tiempo de lo necesario.

¿Qué son las cookies propias y de terceros?

Si regresas a esa misma selección de sitios que estabas viendo antes, noté que había cookies presentes para una variedad de dominios, no solo al que estabas visitando en ese momento. Las cookies que coinciden con el dominio del sitio actual, es decir, lo que se muestra en la barra de direcciones del navegador, se denominan se consideran cookies propias. Del mismo modo, las cookies de dominios que no sean el del sitio actual se conocen como cookies de terceros. Esta no es una etiqueta, pero es relativa al contexto del usuario; la misma cookie puede ser datos de origen o de terceros según el sitio en el que se encuentre el usuario en ese momento.

Se envían tres cookies a un navegador desde diferentes solicitudes en la misma página
Las cookies pueden provenir de una variedad de dominios diferentes en una página.

Siguiendo con el ejemplo anterior, supongamos que una de tus entradas de blog tiene un de un gato particularmente increíble, que está alojada en /blog/img/amazing-cat.png Como es una imagen increíble, otra persona lo usa directamente en su sitio. Si un visitante visitó tu blog y cookie promo_shown y, luego, cuando ve amazing-cat.png en la otra sitio de la persona que la cookie se enviará en esa solicitud de la imagen. Esta no es particularmente útil para nadie, ya que no se usa promo_shown. en el sitio de esta otra persona, solo agrega sobrecarga a la solicitud.

Si ese es un efecto no deseado, ¿por qué querrías hacerlo? Es esta mecanismo que permite a los sitios mantener el estado cuando se utilizan en una contexto de terceros. Por ejemplo, si incorporas un video de YouTube en tu sitio, los visitantes verán la página "Ver más tarde" del reproductor en el reproductor. Si el visitante ya has accedido a YouTube, esa sesión estará disponible en el reproductor incorporado por una cookie de terceros, lo que significa que "Ver más tarde" hará lo siguiente guardar el video de una vez en lugar de pedirles que accedan o que para salir de tu página y regresar a YouTube.

Se envía la misma cookie en tres contextos distintos.
Cuando visitas diferentes páginas, se envía una cookie en un contexto de terceros.

Uno de los bienes culturales de la Web es que tiende a estar abierta por de forma predeterminada. Esto es parte de lo que hizo posible que muchas personas creen su propio contenido y sus aplicaciones allí. Sin embargo, esto también trajo consigo varios seguridad y privacidad. Los ataques de falsificación de solicitudes entre sitios (CSRF) dependen de el hecho de que las cookies se adjuntan a cualquier solicitud a un origen determinado, sin importar quien inicia la solicitud. Por ejemplo, si visitas evil.example, puede activará solicitudes para your-blog.example, y el navegador lo adjuntará las cookies asociadas. Si tu blog no tiene cuidado con la forma en que valida solicitudes, evil.example podría activar acciones como borrar publicaciones o agregar su propio contenido.

Los usuarios también son cada vez más conscientes de cómo se pueden usar las cookies para realizar un seguimiento de sus actividad en varios sitios. Sin embargo, hasta ahora no ha habido una forma de indicar explícitamente tu intent con la cookie. Tu cookie promo_shown debe solo se enviarán en un contexto propio, mientras que una cookie de sesión para un widget para insertarse en otros sitios está intencionalmente ahí para proporcionar la y el estado de acceso en un contexto de terceros.

Puedes indicar explícitamente tu intención con una cookie estableciendo el atributo de SameSite adecuado.

Para identificar tus cookies propias y establecer los atributos adecuados, consulta Recetas de cookies propias.