PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Как запретить сливать токен с ограниченным permission?

DOM и браузер

Слив токена с ограниченными правами предотвращают безопасным хранением (память/HttpOnly cookie), коротким сроком жизни, ограничением scope, привязкой к контексту и возможностью отзыва.

Меры защиты от слива

Безопасное хранение

  • HttpOnly cookie — недоступна из JS (защита от XSS-кражи).
  • В памяти — не в localStorage (XSS).

Короткий срок жизни

Токен быстро истекает — украденный скоро бесполезен:

Access token: 15 минут → окно использования мало

Ограничение прав (scope)

Токен только с минимально нужными правами (принцип наименьших привилегий) — украденный наносит меньше ущерба:

scope: 'read:orders' — только чтение, нельзя удалять

Привязка к контексту

  • HTTPS — не перехватить в сети.
  • SameSite cookie — защита от CSRF.
  • Привязка к устройству/IP (опционально).

Возможность отзыва

Хранить/проверять токены на сервере, уметь инвалидировать (чёрный список, ротация refresh).

Против XSS (главный вектор кражи)

  • Экранирование, CSP, санитизация, чтобы внедрённый скрипт не смог украсть токен.

Реальность

100% предотвратить слив нельзя, но комбинация мер минимизирует ущерб: даже украденный ограниченный токен быстро истекает и мало что может.

Коротко для собеседования

Слив ограниченного токена предотвращают: безопасным хранением (HttpOnly cookie/память, не localStorage), коротким сроком жизни, минимальным scope (наименьшие привилегии — меньше ущерб), HTTPS, SameSite, возможностью отзыва (ротация, чёрный список) и защитой от XSS (CSP, экранирование — главный вектор кражи). Комбинация минимизирует ущерб.

Другие вопросы раздела