Middle — Middle+
Je možné nahradit nebo zachytit JWT token a jak toho lze dosáhnout?
sobes.tech AI
Odpověď od AI
Výměna nebo zachycení JWT tokenu je možné, pokud útočník získá přístup k tokenu nebo klíčům používaným k jeho podpisu. Hlavní způsoby jsou:
- Zachycení tokenu v síti — pokud spojení není zabezpečené (například bez HTTPS), token může být zachycen prostřednictvím MITM útoku.
- XSS útoky — pokud na stránce jsou zranitelnosti, útočník může spustit skript a získat token z localStorage nebo cookies.
- Padělání tokenu — pokud je tajný klíč pro podpis JWT známý nebo kompromitovaný, lze vytvořit platný token s libovolnými daty.
Pro ochranu se používá HTTPS, cookies HttpOnly a Secure, Content Security Policy (CSP), a také pravidelně mění a chrání tajné klíče. Při kontrole JWT v Go je důležité ověřit podpis a platnost tokenu:
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("nečekaná metoda podpisu")
}
return secret, nil
})
}
Tímto způsobem je možné manipulovat s tokenem při slabé ochraně, ale správné používání JWT a bezpečnostní opatření minimalizují rizika.