Простая безопасность не была проблемой, поскольку используется параметр state
.
Основные проблемы, которые я имел в виду, были:
- Является ли это тем же браузером, который мое приложение отправило на Facebook, и которое возвращается для представления токена-кандидата?
- Независимо от того, выполняет ли агент (агент, подобный браузеру) или агенты неоднократно OAuth-запросы и представляет мне неверные токены OAuth, из-за которых мое приложение постоянно связывается с Facebook с плохими токенами, что может привести к потенциально неблагоприятному отношению со стороны Facebook.
Единственное возможное решение первой проблемы - это также установить cookie в дополнение к использованию state
. referer
помогло бы, если бы большинство провайдеров не использовали https.
Вторая проблема имеет нюанс. Неправильно действующие агенты не должны напрямую контролироваться злоумышленником. Это могут быть обычные пользователи браузеров, перенаправленных с помощью некоторых косвенных средств (популярный угнанный сайт, социальная инженерия).
Из-за нюанса существует вероятность того, что заголовок referer
не может быть подделан. Однако https исключает любую значимую выгоду.
Cookies определенно помогают во втором случае также потому, что, если вы устанавливаете куки в POST, сторонние веб-сайты не могут их настроить, и вы не можете быть залиты плохими ответами OAuth из-за взломанных сайтов, массово перенаправляющих пользователей на OAuth. вы.
Это не четкий ответ (или вопрос), но, надеюсь, это показывает нюансы вопроса.