Как обнаружить украденный токен обновления при ротации токенов обновления?

Мне удалось реализовать аутентификацию с помощью токенов jwt на основе токена доступа, токена обновления и RTR (ротация токена обновления). Он просто следует всем правилам:

  1. Токены подписаны JWT, у обоих есть свой секрет (один для доступа, один для обновления)
  2. Токены устанавливаются в файлах cookie httpOnly с безопасным параметром, поэтому XSS и «Человек посередине» предотвращаются.
  3. Токен обновления установил путь только к конечной точке для обновления токенов, поэтому он не отправляется при каждом запросе.
  4. RTR включен, и при каждом обновлении токен обновления заносится в черный список в БД, а новые токены доступа и обновления отправляются обратно.
  5. Токены CSRF используются на маршрутах, которые вставляют/удаляют/обновляют БД для предотвращения атак.

Теперь единственная проблема, которую я вижу, это что делать, когда кто-то крадет токен обновления. Если кто-то действительно украдет его, он может отправить его на мою конечную точку обновления, а затем он внесет этот украденный токен в черный список и получит себе новую пару действительных токенов, которые можно использовать неограниченное время. Поскольку я не хочу отслеживать сеансы и пользователей (именно поэтому я использую аутентификацию без сохранения состояния). Как я могу обнаружить украденный токен обновления? Должен ли я как-то отслеживать токены обновления в БД? Как кто-то может даже украсть токен обновления?

0 ответов

Другие вопросы по тегам