Sobes.tech
Назад к вопросам
Senior
3

Пользователь получил токен, поменял в нём роль и пришёл с изменённым токеном на сервис — как с этим бороться?

Компании, где спрашивали
X5 techX5 tech

Ответ от нейросети

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
}

Таким образом, любые изменения в содержимом токена без правильной подписи делают его недействительным.