Middle — Middle+
Est-il possible de remplacer ou d'intercepter un jeton JWT et comment cela peut-il être réalisé?
sobes.tech IA
Réponse de l'IA
La substitution ou l’interception d’un jeton JWT est possible si un attaquant accède au jeton ou aux clés utilisées pour sa signature. Les principales méthodes sont :
- Interception du jeton sur le réseau — si la connexion n’est pas sécurisée (par exemple, sans HTTPS), le jeton peut être intercepté via une attaque MITM.
- Attaques XSS — si le site présente des vulnérabilités, un attaquant peut exécuter un script et obtenir le jeton depuis localStorage ou cookies.
- Falsification du jeton — si la clé secrète pour signer le JWT est connue ou compromise, il est possible de créer un jeton valide avec des données arbitraires.
Pour se protéger, on utilise HTTPS, cookies HttpOnly et Secure, Content Security Policy (CSP), et on change et protège régulièrement les secrets de signature. En Go, lors de la vérification d’un JWT, il est important de vérifier la signature et la validité du jeton :
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éthode de signature inattendue")
}
return secret, nil
})
}
Ainsi, la substitution est possible en cas de protection faible, mais une utilisation correcte de JWT et des mesures de sécurité minimisent les risques.