Воспроизвести атаки при использовании неявного потока - PullRequest
0 голосов
/ 04 июня 2019

У меня есть приложение React, которое использует неявный поток для авторизации пользователя.

Поток выглядит так: 1. Если токен доступа или информация о пользователе не сохранены в sessionStorage - пользователь перенаправляется на страницу входа,2. Пользователь входит в систему и перенаправляется на домашнюю страницу приложения React.2.1.При перенаправлении обратно на домашнюю страницу URL перенаправления уже имеет access_token и id_token как часть URL-параметров.3. React App сохраняет токен доступа и декодирует id_token для получения информации о пользователе.

Теперь проблема в том, что если кто-то украдет URL перенаправления в 2.1.они могут вставить его в свой браузер и в основном воспроизвести этот логин.

Одним из решений было внедрение nonce.

https://auth0.com/docs/api-auth/tutorials/nonce

В соответствии со статьей выше одноразовый номер должен быть сохранен в localStorage, и как только я получу id_token с одноразовым номером в нем - я должен проверить его с оригинальным одноразовым номером из localStorage.Но злоумышленник может сделать следующее: 1. Взять этот id_token.2. Расшифруйте его, используя любой онлайн-инструмент.3. Проверьте, что это за одноразовый номер.4. Используя Chrome Dev Tool, измените исторических localStorage с необходимыми одноразовыми номерами.

Кто-нибудь знает какие-либо лучшие идеи по предотвращению такой атаки?

1 Ответ

1 голос
/ 07 июня 2019

Проблема реальна. Эта конкретная проблема может быть решена путем строгой проверки URI перенаправления между сервером идентификации и уровнем приложения во время выполнения, но есть много других проблем. Это сообщение в блоге от auth0 объясняет это. https://auth0.com/blog/oauth2-implicit-grant-and-spa/#The-Implicit-Grant

Рабочая группа oauth2.0 опубликовала лучшую текущую практику, где рекомендуется заменить поток неявного предоставления на поток кода авторизации + PKCE. https://tools.ietf.org/html/draft-ietf-oauth-security-topics-11

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...