API-токены часто воспринимаются как незначительная деталь, однако они несут серьезные риски безопасности. Даже корректно подписанный токен может быть украден, а его длительный срок действия позволяет злоумышленникам выдавать себя за легитимных пользователей.
Для публичных клиентов, таких как SPA, стандартом является поток кода авторизации с PKCE. Он привязывает запрос к временному секрету верификации, что не дает атакующему завершить обмен кодом в случае его перехвата.
Срок жизни токена — это баланс между удобством и безопасностью. Для браузерных приложений оптимально время жизни доступа от 5 до 15 минут. Токены обновления могут действовать до 7 дней, а абсолютный лимит сессии рекомендуется ограничить 30 днями.
Хранение токенов в localStorage или sessionStorage небезопасно, так как их может прочитать любой скрипт. Использование HttpOnly-куки с атрибутами Secure, SameSite и __Host значительно снижает риск кражи токена через XSS-атаки.
Наиболее защищенным решением для браузеров является архитектура Backend for Frontend (BFF). В этой схеме токены не попадают в браузер, а сессии управляются на стороне сервера, что изолирует учетные данные от клиентских уязвимостей.





