Сессионный токен — что это такое и как защищает данные
Уникальный идентификатор, который сервер выдаёт устройству после входа в аккаунт и которым проверяет каждый последующий запрос без повторного ввода пароля. Живёт ограниченное время и может быть отозван вручную.
Что такое сессия и сессионный токен
Сессия — период, в течение которого сервер считает пользователя авторизованным без повторного запроса пароля на каждое действие. Сессионный токен — уникальная строка, которую сервер выдаёт устройству после входа и которая подтверждает: запрос действительно от вошедшего пользователя. Пароль проверяется один раз, а дальше каждый запрос сопровождается токеном вместо пароля.
Токен хранится на стороне клиента: в cookie браузера, в localStorage или в защищённом хранилище устройства (Keychain на iOS, Keystore на Android). Сервер либо хранит соответствие токена и пользователя у себя, либо использует самодостаточный JWT, в который зашифрованы данные о пользователе и сроке действия.
Как устроен токен и где он живёт
У большинства сервисов в ходу два токена. Токен доступа (access token) — короткоживущий, используется на каждый запрос к API. Токен обновления (refresh token) — живёт дольше и хранится более защищённо; когда access token истекает, клиент обменивает refresh token на новую пару без повторного ввода пароля. Подробнее о разграничении токенов — в материале про OAuth 2.0, где эта пара — стандартный элемент протокола.
Передача токена обязана идти по защищённому каналу — HTTPS поверх TLS. По обычному HTTP токен можно перехватить в той же Wi-Fi-сети — атака известна как session hijacking. Поэтому токены исключают из логов и адресной строки: любой канал утечки строки токена — потенциальная утечка сессии без утечки пароля.
Срок жизни и продление
Таймаут бездействия — сессия закрывается без активности заданное время (15–30 минут для банковских сервисов, недели — для соцсетей). Абсолютный срок действия — сессия завершается спустя фиксированный интервал независимо от активности, ограничивая окно, полезное для атакующего с украденным токеном.
Многие сервисы используют «скользящее» продление: каждое действие сдвигает таймаут бездействия вперёд. При входе через QR-код или второй фактор сервер создаёт отдельную новую сессию со своим токеном — старые сессии на других устройствах она не затрагивает.
Отзыв сессий и почему важно закрывать чужие устройства
Отзыв — принудительное завершение сессии до истечения срока: сервер помечает токен недействительным, и следующий запрос с ним получает отказ. Раздел «активные сессии» в настройках аккаунта — список токенов, которые сервер считает действительными, с привязкой к устройству и геолокации по IP.
Закрывать сессию на чужом устройстве нужно потому, что токен работает вместо пароля: смена пароля основного аккаунта не затронет уже открытую сессию — токен продолжит действовать до истечения срока или явного отзыва. Функция «выйти со всех устройств» отзывает разом все токены — стандартная мера при подозрении на компрометацию или обнаружении перехода по вредоносной ссылке.
Частые вопросы
Чем сессионный токен отличается от пароля?
Пароль — постоянный секрет, который вводит пользователь. Токен — временный идентификатор от сервера с ограниченным сроком жизни. Компрометация токена опаснее в моменте, но безопаснее на дистанции: он истекает или отзывается, тогда как украденный пароль остаётся рабочим до смены вручную.
Что произойдёт, если не выйти из аккаунта на чужом компьютере?
Токен останется в браузере и будет действовать до истечения таймаута или абсолютного срока — иногда часы, иногда недели. Надёжный способ закрыть доступ немедленно — явно выйти (отзывает токен) или отозвать сессию удалённо через раздел «активные устройства».
Может ли сессионный токен быть перехвачен и использован против пользователя?
Да — через передачу по HTTP вместо HTTPS в общей Wi-Fi-сети или кражу через межсайтовый скриптинг (XSS). Получив токен, злоумышленник выполняет запросы от имени пользователя без пароля. Защита — HTTPS, короткий срок жизни токена, флаги cookie HttpOnly и Secure.
Чем сессионный токен отличается от JWT?
JWT — способ реализовать токен: самодостаточная подписанная строка с данными о пользователе и сроке действия, без обращения к базе на каждый запрос. Классический сессионный токен — случайный идентификатор, а информация хранится на сервере в таблице сессий.
Как посмотреть список активных сессий и закрыть ненужные?
В настройках безопасности есть раздел «Сессии» или «Устройства» — список токенов с указанием устройства, браузера, IP и времени активности. Рядом есть кнопка завершения конкретной сессии и опция «выйти везде», отзывающая все токены разом.
Почему вход по QR-коду создаёт отдельную сессию, а не продлевает существующую?
Вход по QR-коду выдаёт новому устройству независимый токен — для сервера это отдельный вход, а не продолжение сессии телефона, которым код был подтверждён.
Автор материала
Андрей СамойловЭксперт по QR-кодам и SaaS-маркетингу. 10 лет в SaaS, маркетинге и ИТ.
Об авторе и все материалы