Saltar al contenido principal

¿Qué es una Cookie? 🍪

Cuando accedes a un sitio web, a menudo ves el mensaje "¿Aceptas el uso de cookies?". Te explicaré qué es exactamente una cookie y por qué es necesaria, de manera simple para que incluso los principiantes puedan entenderlo!

¿Comparar las cookies con la vida cotidiana?

Comparemos las cookies con un recibo.

La historia del recibo de café ☕

Primera visita:
Cliente: "Un café americano por favor"
Cafetería: "Aquí está tu café y tu recibo"
[Recibo: número de cliente #123, menú favorito: café americano]

Siguiente visita:
Cliente: [Muestra el recibo]
Cafetería: "¡Ah, cliente #123! ¿Un café americano para ti?"

¡Las cookies funcionan igual!

Primera visita:
Navegador: "Es mi primera vez en este sitio"
Sitio web: "Aquí tienes una cookie"
[Cookie: ID de usuario, preferencias, etc.]

Siguiente visita:
Navegador: [Muestra la cookie]
Sitio web: "¡Ah, has vuelto! Mantendré tu sesión"

Cookie (Cookie)

  • Pequeño archivo de texto que el sitio web almacena en el navegador
  • La forma en que el sitio web te "recuerda"
  • Tamaño: generalmente menos de 4KB

¿Dónde se almacenan las cookies?

Mi ordenador/smartphone
└── Navegador (Chrome, Safari, etc.)
└── Almacenamiento de cookies
├── Cookie de google.com
├── Cookie de elmundo.es
└── Cookie de github.com

Qué hacen las cookies

1. Mantener la sesión iniciada 🔐

Sin cookie:

1. Iniciar sesión
2. Ir a otra página
3. Sesión cerrada... 😭
4. Iniciar sesión de nuevo
5. Ir a otra página otra vez
6. Sesión cerrada de nuevo... 😭

Usando cookie:

1. Iniciar sesión
2. Cookie guarda la información de sesión
3. ¡La sesión se mantiene al ir a otras páginas! ✅
4. ¡La sesión se mantiene incluso al cerrar el navegador! ✅

2. Recordar el carrito 🛒

En una tienda online:
1. Añadir el producto A al carrito
2. Ir a ver otros productos
3. ¡El producto A sigue en el carrito! ✅

3. Configuración personalizada ⚙️

Configuración del sitio web:
- Idioma: Español
- Tema: Modo oscuro
- Tamaño de fuente: Grande

→ ¡Aplicado automáticamente en la próxima visita! ✅

4. Seguimiento y publicidad 📊

Productos que has visto:
- Zapatos A
- Bolso B

→ Mostrar publicidad relacionada en otros sitios

Las cookies se almacenan en formato nombre=valor:

Nombre: user_id
Valor: 12345
Dominio: example.com
Ruta: /
Expiración: 2025-12-31
Seguridad: Secure, HttpOnly
session_id=abc123xyz; Domain=example.com; Path=/; Expires=Fri, 31 Dec 2025 23:59:59 GMT; Secure; HttpOnly

Tipos de cookies

Cookie que se elimina al cerrar el navegador

Ciclo de vida: Solo mientras el navegador está abierto
Uso: Inicio de sesión temporal, carrito
Característica: Sin fecha de expiración

Ejemplo:

Abrir navegador → Comprar → Cerrar navegador → Carrito vacío

Cookie que se mantiene hasta una fecha especificada

Ciclo de vida: Hasta la fecha de expiración o eliminación manual
Uso: "Mantener sesión iniciada", configuración personalizada
Característica: Fecha de expiración especificada

Ejemplo:

Marcar "Mantener sesión iniciada"
→ Inicio de sesión automático durante 30 días ✅

Cookie creada directamente por el sitio web visitado

Visitar example.com
→ Cookie establecida por example.com
→ Usada solo en example.com

Usos:

  • Mantener sesión
  • Carrito
  • Configuración del sitio

Cookie creada por otro sitio web (principalmente para publicidad)

Visitar example.com
→ Script de empresa publicitaria en la página se ejecuta
→ ads.com establece una cookie
→ Te rastrea en múltiples sitios

Usos:

  • Seguimiento publicitario
  • Análisis de comportamiento del usuario
  • Publicidad personalizada
advertencia

¡Las cookies de terceros están siendo bloqueadas gradualmente por problemas de privacidad! Chrome, Safari, etc. están bloqueando las cookies de terceros.

Proceso de funcionamiento de las cookies

Navegador → Solicitud al sitio web
Sitio web → Respuesta + envío de cookie

Respuesta HTTP:
Set-Cookie: user_id=12345; Expires=...
El navegador guarda la cookie en su almacenamiento
Navegador → Nueva solicitud al sitio web + envío de cookie

Solicitud HTTP:
Cookie: user_id=12345
El sitio web lee la cookie e identifica al usuario
→ "¡Ah, es el usuario 12345!"

Atributos de las cookies

Domain (Dominio)

La cookie de example.com
solo se usa en example.com

Path (Ruta)

Path=/shop
→ Cookie enviada solo en la ruta /shop

Expires/Max-Age (Expiración)

Expires=2025-12-31
→ Mantener hasta esta fecha

Max-Age=3600
→ Eliminar después de 3600 segundos (1 hora)

Secure (Seguridad)

Bandera Secure
→ Cookie enviada solo por HTTPS
No enviada por HTTP

HttpOnly

Bandera HttpOnly
→ No accesible mediante JavaScript
Defensa contra ataques XSS

SameSite

SameSite=Strict
→ Cookie enviada solo en el mismo sitio
Defensa contra ataques CSRF

Ventajas de las cookies

✅ Mejora de la experiencia del usuario

  • Mantener sesión
  • Contenido personalizado
  • Compra conveniente

✅ Mantener el estado

  • HTTP no tiene estado (Stateless)
  • Las cookies permiten mantener el estado

✅ Implementación simple

  • Fácil de usar tanto en servidor como en cliente
  • Casi no requiere configuración adicional

Desventajas de las cookies

❌ Riesgos de seguridad

  • Posibilidad de robo (ataques XSS, CSRF)
  • Inadecuada para almacenar información sensible

❌ Problemas de privacidad

  • Posibilidad de rastrear usuarios
  • Seguimiento publicitario con cookies de terceros

❌ Límite de tamaño

  • Límite de 4KB por cookie
  • Límite de número de cookies por dominio (generalmente 20~50)

❌ Enviada en cada solicitud

  • Todas las solicitudes HTTP incluyen cookies
  • Aumento del tráfico
CaracterísticaCookieLocal StorageSession Storage
Tamaño4KB5-10MB5-10MB
Ciclo de vidaConfigurar expiraciónPermanenteEliminar al cerrar pestaña
Envío al servidor✅ Cada vez❌ No enviado❌ No enviado
AccesoServidor/JSSolo JSSolo JS
UsoAutenticación, seguimientoDatos grandesDatos temporales

¿Cuándo usar qué?

Cookie: Token de inicio de sesión, información que el servidor necesita saber
Local Storage: Configuración del usuario, datos sin conexión
Session Storage: Datos temporales de formulario, información de un solo uso

Seguridad de las cookies

1. Usar bandera Secure 🔒

Set-Cookie: token=abc; Secure
→ Enviada solo por HTTPS

2. Usar bandera HttpOnly 🛡️

Set-Cookie: session=xyz; HttpOnly
→ Bloquear acceso de JavaScript
→ Defensa contra ataques XSS

3. Usar bandera SameSite 🚫

Set-Cookie: id=123; SameSite=Strict
→ Defensa contra ataques CSRF

4. Prohibir almacenamiento de información sensible ⚠️

❌ Contraseñas
❌ Números de tarjeta de crédito
❌ Números de identificación

✅ ID de sesión (token cifrado)
✅ Configuración del usuario

Gestionar cookies

Ver cookies en el navegador

Chrome:

Configuración → Privacidad y seguridad → Cookies y otros datos de sitios
→ Ver todas las cookies y datos de sitios

Herramientas de desarrollador:

F12 → Pestaña Application → Storage → Cookies

Eliminar cookies

1. Eliminar solo las cookies de un sitio específico
2. Eliminar todas las cookies
3. Configurar eliminación automática de cookies (al cerrar el navegador)

Manejar cookies con JavaScript

Establecer cookie:

document.cookie = "username=Juan García; expires=Fri, 31 Dec 2025 23:59:59 GMT; path=/";

Leer cookie:

console.log(document.cookie);
// "username=Juan García; theme=dark; ..."

Eliminar cookie:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";

Ejemplos de uso real

Ejemplo 1: Mantener sesión iniciada 🔐

// Al iniciar sesión con éxito
Set-Cookie: auth_token=eyJhbGc...;
Expires=Mon, 31 Jan 2025 23:59:59 GMT;
Secure;
HttpOnly;
SameSite=Strict

// Automáticamente en cada solicitud siguiente:
Cookie: auth_token=eyJhbGc...

Ejemplo 2: Configuración de tema 🎨

// El usuario selecciona modo oscuro
document.cookie = "theme=dark; max-age=31536000; path=/";

// Al cargar la página
if (document.cookie.includes("theme=dark")) {
enableDarkMode();
}

Ejemplo 3: Configuración de idioma 🌏

// Selección de idioma
Set-Cookie: lang=es; Max-Age=31536000; Path=/

// El servidor lee la cookie y proporciona contenido en español

¿Por qué pedir consentimiento para cookies?

RGPD (Reglamento General de Protección de Datos):

Los sitios web deben obtener
el consentimiento del usuario antes de usar cookies

Cookies esenciales vs cookies opcionales:

Esenciales: Inicio de sesión, carrito (no requiere consentimiento)
Opcionales: Seguimiento publicitario, análisis (requiere consentimiento)

Preguntas frecuentes (FAQ)

P1: ¿Qué pasa si bloqueo las cookies?

R: Muchos sitios web no funcionarán correctamente.

  • No se puede iniciar sesión
  • No se puede usar el carrito
  • La configuración no se guarda

P2: ¿Son seguras las cookies?

R: Sí, si se usan correctamente.

  • Usar banderas Secure, HttpOnly
  • No almacenar información sensible
  • Usar HTTPS

P3: ¿Pueden las cookies infectar con virus?

R: ¡No! Las cookies son simples archivos de texto.

  • No pueden ejecutar código
  • No pueden contener virus

P4: ¿Debo eliminar las cookies con frecuencia?

R: Es una elección personal.

  • Ventaja: Mejora de la privacidad
  • Desventaja: Cierre de sesión, reinicio de configuración

P5: ¿Cookies en modo incógnito?

R: Se usan temporalmente.

  • Todo se elimina al cerrar la ventana de incógnito
  • Mejora de la prevención de seguimiento

El futuro de las cookies

1. Eliminación de cookies de terceros

Chrome, Safari, etc. bloquean cookies de terceros
→ Las empresas publicitarias buscan alternativas

2. Tecnologías alternativas

- Privacy Sandbox (Google)
- FLoC (Federated Learning of Cohorts)
- Nuevos estándares con privacidad mejorada

Siguientes pasos 🚀

Si has entendido las cookies:

  1. ¿Qué es el Caché? - Otra forma de cargar datos rápidamente
  2. ¿Qué es una VPN? - Protección de la privacidad en línea
  3. Entender solicitud/respuesta HTTP - Cómo se envían las cookies

Conclusión

¡Las cookies son la forma en que los sitios web te recuerdan! 🍪

Puntos a recordar:

  • Cookie = Pequeño archivo de texto
  • Almacenada en el navegador
  • Mantener sesión, carrito, guardar configuración
  • Cuidado con la seguridad (usar Secure, HttpOnly)
  • Las cookies de terceros son para seguimiento (se pueden bloquear)

Gracias a las cookies podemos usar la web de manera conveniente, ¡pero también debemos tener cuidado con la privacidad! 🔐