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
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
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"
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.
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.
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.