У меня есть приложение 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 с необходимыми одноразовыми номерами.
Кто-нибудь знает какие-либо лучшие идеи по предотвращению такой атаки?