piapia123
es

Formato de cookies

Web

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

⚠️ No usa la red: las cookies las obtienes tú (Application → Cookies en las herramientas de desarrollo, o las líneas `Set-Cookie` que devuelve `curl -I`). ⚠️ Y un aviso: no pegues cookies con una sesión real en ninguna herramienta en línea, porque eso equivale a entregar la sesión. Esta herramienta se ejecuta por completo en local, pero conviene adquirir el hábito. Descompón en una tabla legible la línea `Cookie` o `Set-Cookie`: basta con copiarla de las herramientas de desarrollo del navegador y pegarla. ⚠️ Estas dos cabeceras se parecen pero significan cosas totalmente distintas. La `Cookie` de una petición es una lista plana de pares nombre-valor: ``` a=1; b=2; session=abc ``` Eso son tres cookies. En cambio cada línea `Set-Cookie` de una respuesta describe una sola cookie, con sus atributos tras los puntos y coma: ``` session=abc; Path=/; HttpOnly; Secure ``` El mismo `a=1; b=2` aquí significa «una cookie llamada a, con un atributo llamado b». Equivocarse da una salida completamente distinta, y ninguno de los dos errores avisa: por eso aquí se detecta automáticamente, y si el resultado no te convence puedes forzar el modo. La regla de detección es «¿aparece algún nombre de atributo de cookie conocido (Path / Domain / Expires / Max-Age / Secure / HttpOnly / SameSite)?», no «¿hay algo tras el primer punto y coma?», porque esto último leería como Set-Cookie la cabecera de petición `a=1; b=2`, que es de lo más común. De paso se descodifican escapes como `%20`, y se señala qué atributo de seguridad le falta a cada cookie: sin `HttpOnly` los scripts de la página pueden leerla (un solo XSS y la sesión está perdida), sin `Secure` también se envía por HTTP en claro, y sin `SameSite` viaja en las peticiones entre sitios (el caldo de cultivo del CSRF).

Funciones

  • Analiza tanto la cabecera `Cookie` de petición como la `Set-Cookie` de respuesta, con detección automática y anulación manual
  • Los atributos de `Set-Cookie` van como nota al margen: nunca se cuelan en el «valor» que copias
  • `Expires` y `Max-Age` se convierten en fechas concretas, y las caducadas se marcan
  • Señala cuál de `HttpOnly` / `Secure` / `SameSite` le falta a cada cookie
  • ⚠️ Entiende `Partitioned` (CHIPS), y advierte aparte cuando falta `Secure`: esa combinación la rechaza el navegador directamente, que no es lo mismo que un «funciona pero es más débil»
  • Descodifica opcionalmente los escapes de porcentaje de los valores
  • Los puntos y coma dentro de un valor entrecomillado no se tratan como separadores
  • Todo se analiza en tu dispositivo: las cookies nunca salen de él

Cómo se usa

  1. Pega la línea `Cookie` o `Set-Cookie` a la izquierda (vale más de una)
  2. Fuerza el modo de análisis si la detección no acierta
  3. El resultado aparece al instante; cada fila se copia por separado

Preguntas frecuentes

¿Por qué mi `a=1; b=2` se ha analizado como dos cookies?
Porque en una cabecera Cookie de petición de verdad son dos cookies: esa cabecera separa varios pares nombre-valor independientes con puntos y coma, que es su forma más común. Solo en una cabecera Set-Cookie de respuesta significa algo un atributo lo que va tras un punto y coma. Las dos se distinguen por «¿aparece algún nombre de atributo conocido?»: `a=1; b=2` no contiene ninguno de `Path`, `HttpOnly` y compañía, así que se lee como petición. Añade un atributo y cambia: `a=1; b=2; Secure` se analiza como una cookie llamada `a` con `b=2` como atributo suyo. Si la detección automática no encaja con tu caso, fija el modo de análisis a mano.
¿Cuánto importa el aviso «sin HttpOnly»?
Para una cookie de sesión, muchísimo. `HttpOnly` hace que la cookie sea invisible para JavaScript: en cuanto una página tiene un XSS (aunque solo sea un script de terceros envenenado), una cookie sin `HttpOnly` se puede leer directamente con `document.cookie` y enviarla a un atacante, y una sesión robada es una cuenta robada. `Secure` y `SameSite` también importan, en situaciones distintas: `Secure` evita que un intermediario intercepte la transmisión en claro, y `SameSite` evita que las peticiones entre sitios lleven la cookie automáticamente (eso es el CSRF). Poner las tres casi siempre es lo correcto.
¿Qué diferencia hay entre `Max-Age` y `Expires`?
`Max-Age` es «dentro de tantos segundos»; `Expires` es un instante absoluto. Cuando están los dos, gana `Max-Age` (lo dice la RFC 6265), porque los instantes absolutos sufren relojes desajustados y husos mal puestos, mientras que los segundos relativos no. Otros dos casos que conviene conocer: un valor cero o negativo significa borrar ya esta cookie (así funciona el cierre de sesión), y no poner ninguno la convierte en una cookie de sesión que desaparece al cerrar el navegador, que es la razón de que algunos sitios te obliguen a iniciar sesión otra vez.

Herramientas relacionadas