Este es el token que se envía en cada solicitud de tu app. ¿Quién crees que puede leer lo que hay escrito dentro? La respuesta es sencilla: cualquiera.
Tres partes
Todo JWT se divide en tres partes separadas por puntos: header.payload.signature. Las dos primeras no están cifradas, solo codificadas en Base64. Base64 no es cifrado, es solo un formato de codificación: se puede decodificar en cualquier momento.
const [header, payload] = token.split(".");
console.log(JSON.parse(atob(payload)));
// { sub: "user_123", email: "...", role: "admin", exp: 1735689600 }Si pegas esto en la consola de tu navegador, tu correo electrónico, tu ID de usuario, tu rol y la fecha de expiración aparecen justo delante de ti. Por eso nunca debes poner contraseñas, números de documento de identidad ni datos de tarjetas en el payload de un JWT.
¿Puedo editarlo y convertirme en admin?
Podrías editar el payload y escribir role: "admin", al fin y al cabo Base64 es una codificación bidireccional. Pero el servidor recalcula la firma con una clave secreta que solo él conoce. La firma no coincidirá con tu payload falsificado y el servidor rechazará el token: 401. Puedes leer el payload, pero no puedes manipularlo sin que se note.
Cuatro reglas
Importante: Trabajar con JWT
- No pongas datos sensibles en el payload: trátalo como público.
- Vuelve a verificar siempre la autorización (
role,permissions) en el servidor; no confíes ciegamente en el token. - Mantén tiempos de expiración cortos y usa refresh tokens para sesiones largas.
- Lee el secreto de firma (
secret) desde.env, no lo escribas directamente en el código y nunca lo registres en ningún log.
Para terminar
El trabajo de JWT no es la confidencialidad, sino la integridad: garantiza que el contenido no ha sido alterado, no que esté oculto. Si tienes datos que realmente deben permanecer secretos, usa JWE (JWT cifrado) o las sesiones tradicionales del lado del servidor.
Hoja de ruta y herramienta interactivas
Desarrollador Backend Junior 2026
Lo que realmente necesitas saber para conseguir un puesto backend junior en 2026 y lo que puede esperar, filtrando las trampas de palabras de moda de las ofertas reales.
¿SQL o NoSQL?
Responde seis preguntas y te diré qué tipo de base de datos encaja con tu proyecto, y por qué.
Sigue leyendo
- CZESCortando el ruido: ¿qué lenguaje y framework de backend deberías elegir en 2026?
Cortando el ruido: ¿qué lenguaje y framework de backend deberías elegir en 2026?
25 de octubre de 2026 · 4 min de lectura - CZESDentro de PHP CVE-2026-115560: el desajuste entre Session Upload Progress y el serialize handler
Dentro de PHP CVE-2026-115560: el desajuste entre Session Upload Progress y el serialize handler
24 de octubre de 2026 · 4 min de lectura