Sobes.tech
Middle — Middle+

¿Es posible la sustitución o interceptación del token JWT y cómo se puede llevar a cabo?

sobes.tech AI

Respuesta de la IA

La sustitución o interceptación de tokens JWT es posible si un atacante obtiene acceso al token o a las claves utilizadas para su firma. Los métodos principales son:

  1. Interceptación del token en la red — si la conexión no está protegida (por ejemplo, sin HTTPS), el token puede ser interceptado mediante un ataque MITM.
  2. Ataques XSS — si el sitio tiene vulnerabilidades, un atacante puede ejecutar scripts y obtener el token desde localStorage o cookies.
  3. Falsificación del token — si la clave secreta para firmar el JWT es conocida o comprometida, se puede crear un token válido con datos arbitrarios.

Para protegerse, se utilizan HTTPS, cookies HttpOnly y Secure, Content Security Policy (CSP), además de cambiar y proteger regularmente los secretos de firma. En Go, al verificar un JWT, es importante verificar la firma y la validez del token:

import (
  "github.com/golang-jwt/jwt"
)

func validateToken(tokenString string, secret []byte) (*jwt.Token, error) {
  return jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
    if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
      return nil, fmt.Errorf("método de firma inesperado")
    }
    return secret, nil
  })
}

De esta manera, la sustitución es posible con una protección débil, pero el uso correcto de JWT y las medidas de seguridad minimizan los riesgos.