Django JWT изменен, но все еще действителен

У меня есть проект, в котором я проверял подлинность токена, сгенерированного библиотекой rest_framework_simplejwt. Играя с токеном, я изменил последний символ с 8 на 9, и он заработал. Я не могу понять, почему и как это произошло.

Мой оригинальный токен:

{
    "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzA3MDY0NTc1LCJpYXQiOjE3MDcwNjA5NzUsImp0aSI6IjBhNDEyY2M5NjIwYjQxYzJhZDI5NzFhNzZkZGJhOGJhIiwidXNlcl9pZCI6NH0.jvylGlq3qkJPhvBkhbsqFPakwyMS7BBDwB-bMIAzWq8"
}

Утраченный, но действительный токен:

{
    "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzA3MDY0NTc1LCJpYXQiOjE3MDcwNjA5NzUsImp0aSI6IjBhNDEyY2M5NjIwYjQxYzJhZDI5NzFhNzZkZGJhOGJhIiwidXNlcl9pZCI6NH0.jvylGlq3qkJPhvBkhbsqFPakwyMS7BBDwB-bMIAzWq9"
}

Фокусировка на последнем символе лексемы. Есть мнения?

Как проверить подлинность токена?

Токен JWT состоит из 3 частей: HEADER, PAYLOAD и SIGNATURE.

Вы изменяете часть SIGNATURE, и если ваш токен все еще действителен, это означает, что вы не проверяете подпись.

Вот ссылка на статью, которая объясняет этот вопрос. Расшифровка аномалии JWT: когда изменение последнего символа токена не нарушает верификацию

Вернуться на верх