Un JWT, también conocido como JSON Web Token, es un elemento que nos permite transmitir información de forma segura en internet, encriptando las credenciales de un usuario y sus datos más importantes. En este post, te enseñaremos exactamente cómo funciona la seguridad de un JWT, fundamental para proteger los datos y credenciales de un usuario.
¿Cómo funciona la seguridad de un JWT?
La seguridad de un JWT funciona a partir de la tercera parte de este código. En nuestro post sobre qué hay en un JWT, te hemos explicado que esta tercera parte es la firma de verificación. ¿Qué significa esto? Pues que hay una sección especial del JWT que se encarga de verificar la validez del JWT. Esto quiere decir que, si llegamos a adulterar el contenido de este elemento (ya sea en la sección de datos o directamente en la firma), el token será inválido.
Ten presente que un token manipulado dará un 401, por lo que una petición HTTP con un token de este tipo no nos devolverá una respuesta válida, pues la firma no será igual a la firma que está en nuestro backend.
¿Podemos hacer peticiones encriptadas con JWT?
Una de las preguntas más frecuentes cuando estamos lidiando con la seguridad de un JWT es si se puede usar este elemento de codificación para hacer peticiones encriptadas. Es decir, para asegurarnos de que no se sepa lo que se está pidiendo en una petición HTTP. La respuesta a esta pregunta es no.
Como te explicamos en el artículo mencionado en el punto anterior, un JWT no es un elemento usado para guardar y codificar secretos. Esto se debe a que, gracias a herramientas como jwt.io, es muy fácil coger un string como estos y leer el contenido de una petición.
Por ello, la seguridad de un JWT se relaciona más con la modificación de este contenido. Es decir, aunque un JSON Web Token puede llegar a ser leído por un tercero, no podrá ser modificado sin alterar también su validez. Entonces, si un tercero llega a cambiar aunque sea una sola letra de un token de estos, el backend advertirá que este está manipulado y dirá que no es válido, evitando ejecutar cualquier tipo de acción con él.
Entonces, un tercero no podría leer la sección de datos o payload de un JWT y modificarla, pues automáticamente el uso del string le devolverá un 401: Unauthorized. Aunque el JWT como tal esté inalterado, su contenido lo está y el backend lo reconoce.
De este modo, la seguridad de un JWT evita que un tercero lea el contenido de una petición y altere sus datos o se haga pasar por el autor de estos datos, lo que elimina el riesgo de suplantación de identidad y las acciones con fines maliciosos.
Para conocer más sobre cómo funciona la seguridad de un JWT y cómo esta protege a los usuarios, te recomendamos leer nuestro post sobre protección de datos de token JWT.
La moraleja final de la seguridad de un JWT es que un token de este tipo, siempre y en cualquier API Rest que usemos con cualquier web, contiene todos los datos del usuario. En este sentido, tanto nuestro proyecto web como un tercero podrán usar los métodos para codificar un JWT desde JavaScript y decodificar nuestro JWT. Esto les permitirá consultar los datos del usuario, pero no modificarlos.
¿Quieres seguir aprendiendo?
Tras leer este post, sabes exactamente cómo funciona la seguridad de un JWT. Sin embargo, ¡todavía queda mucho por aprender sobre los datos de la web! Por ello, te invitamos a ser parte de nuestro Desarrollo Web Full Stack Bootcamp, un espacio de formación intensiva e íntegra en el que, en muy pocos meses, aprenderás los conceptos, herramientas y lenguajes de este mundo a nivel tanto teórico como práctico y con el acompañamiento constante de expertos en la materia. ¿Quieres seguir aprendiendo para impulsar tu carrera? ¡Inscríbete ahora!