Back to questions
X5 tech
Senior
4
Пользователь получил токен, поменял в нём роль и пришёл с изменённым токеном на сервис — как с этим бороться?
Companies where asked
Answer from AI
sobes.tech AI
Если пользователь получил токен и изменил в нём роль, то это означает, что токен не защищён должным образом. Чтобы с этим бороться, используют цифровую подпись токена (например, JWT с подписью HMAC или RSA). При получении токена сервис проверяет подпись — если токен был изменён, подпись не совпадёт, и токен будет отвергнут.
Пример проверки JWT на Go с использованием библиотеки github.com/dgrijalva/jwt-go:
import (
"fmt"
"github.com/dgrijalva/jwt-go"
)
func validateToken(tokenString string, secret []byte) (*jwt.Token, error) {
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("unexpected signing method")
}
return secret, nil
})
if err != nil {
return nil, err
}
if !token.Valid {
return nil, fmt.Errorf("invalid token")
}
return token, nil
}
Таким образом, любые изменения в содержимом токена без правильной подписи делают его недействительным.