Я использовал OAuth Playground , чтобы лучше понять поток OpenID Connect, и он говорит о проверке параметра state
:
Пользователь был перенаправленобратно к клиенту, и вы увидите несколько дополнительных параметров запроса в URL:
?state=7ymOWcwttpCfDNcs&code=Tav2TPBjSNvR8aowA3oe
Поскольку злоумышленник может создать запрос GET, который выглядит примерно так:Злоумышленник может предоставить вашему приложению коды авторизации нежелательной почты.Сначала необходимо убедиться, что параметр состояния соответствует сеансу этого пользователя, чтобы быть уверенным, что вы инициировали запрос и отправляете только тот код авторизации, который предназначен для вашего клиента.
На основании этогоПо объяснению, кажется, что единственная «атака», которую мы предотвращаем с помощью параметра состояния, - это та, в которой злоумышленник отправляет нашему приложению неверные коды, мы проверяем неверный код на сервере авторизации и получаем отказ.
Но на самом деле это не очень-то сильно навлекает злоумышленника или причиняет нам большой вред: мы просто делаем несколько дополнительных http-запросов к серверу авторизации, которые нам бы не понадобились, если бы мы отклонилинемедленно запросить на нашем сервере, когда состояние не соответствует.
Мой вопрос: правильное ли мое понимание, или я упускаю более последовательный вектор атаки, который state
предотвращает?