Firmar y verificar cookies
CifradoTodo se ejecuta en tu navegador: no se sube nada
Una cookie firmada protege contra la manipulación, no contra el espionaje: el valor sigue en texto claro en el navegador, pero solo un servidor que conozca la clave puede producir un HMAC que coincida. La salida es la forma `s:<base64url(valor)>.<base64url(HMAC)>` de `cookie-signature` de Express, donde el HMAC cubre el valor original (bytes UTF-8). La verificación prueba primero con el algoritmo que hayas elegido; si falla, prueba con los otros tres y, cuando uno coincide, te dice que el algoritmo estaba mal en lugar de un vago «la firma no coincide». La comparación es byte a byte y de tiempo constante, sin cortocircuito. Todo se calcula en local; tu clave no se sube.
Funciones
- Cuatro HMAC: SHA-256 / SHA-384 / SHA-512 / SHA-1
- Emite la forma `s:` de `cookie-signature` de Express
- Muestra la firma hexadecimal para compararla con `openssl dgst -hmac`
- La verificación separa «formato incorrecto», «clave/valor incorrectos» y «algoritmo equivocado»
- Si el algoritmo no es el correcto, nombra el que firmó de verdad
- Comparación byte a byte en tiempo constante para evitar un canal lateral de temporización
- Una clave vacía se rechaza en vez de emitir una firma falsa que parece plausible
- Copia una fila suelta o todas
Cómo se usa
- Elige Firmar o Verificar
- Escribe la clave y elige un algoritmo
- En modo firmar escribe el valor de la cookie; en verificar, pega el `s:...` entero
- Los resultados salen enseguida, con el desglose y el equivalente en openssl
Preguntas frecuentes
- ¿Firmar oculta el contenido de la cookie?
- No. Firmar solo demuestra que el valor no se ha cambiado: sigue en texto claro y tanto el usuario como cualquier intermediario pueden leerlo. Para la confidencialidad usa HTTPS y no pongas secretos directamente en una cookie. Lo que evita firmar es la falsificación, como convertir user=alice en user=admin.
- ¿Por qué no comparar las firmas con `===`?
- `===` retorna en el primer byte distinto, así que acertar los primeros bytes tarda un poco más que fallar. Un atacante puede promediar esa diferencia a lo largo de muchas peticiones y recuperar la firma byte a byte. Por eso esta herramienta acumula el XOR de todos los bytes y nunca cortocircuita.
- ¿Cómo debo guardar la clave?
- La clave es toda la seguridad del esquema. Tenla solo en el servidor, larga y aleatoria. No la envíes nunca al front-end ni la mandes junto a la cookie. Esta herramienta no guarda lo que escribes, pero sigue siendo una página web: maneja las claves de producción con un comando en tu propia máquina.
Herramientas relacionadas
HMAC
CifradoFirma un mensaje con una clave secreta mediante HMAC y obtén un resultado que coincide con Node, Java y Python. La clave no sale de tu navegador.
Formato de cookies
WebAnaliza una cabecera Cookie de petición o Set-Cookie de respuesta en una tabla, separa atributos y caducidad, y avisa si falta HttpOnly, Secure o SameSite.
Cookie a JS
WebConvierte una cadena de cookies en sentencias document.cookie para la consola, o en un objeto literal. HttpOnly y Domain se omiten, con el motivo.
Base64
CifradoConvierte texto a Base64 y al revés, con UTF-8 correcto para acentos, chino y emoji. Todo se ejecuta en tu navegador: no se sube nada.
Codificar URL
CifradoEscapa texto a la forma %XX y lo devuelve, tratando una URL completa y un valor de parámetro como trabajos distintos. Todo en tu navegador.
Entidades HTML
CifradoConvierte < > & y las comillas en entidades HTML y las devuelve en una sola pasada, así que &lt; da <, no un ángulo. En tu navegador.