Вы генерируете параметр состояния back или front end для запроса OAuth 2.0? - PullRequest
0 голосов
/ 12 декабря 2018

Я искал в Интернете ответ, но не смог найти ясного.Поскольку я не совсем понимаю CSRF-атаки и как параметр state в OAuth 2.0, чтобы избежать такого рода атак, мне просто интересно, нужно ли сгенерировать параметр state на стороне клиента и поместить значение в localalstorage или на бэкэндсервер, а затем сохранить его в переменной сеанса, которую я затем возвращаю на сторону клиента, чтобы создать свой URL.Первое решение кажется лучшим, но оно безопасное?

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 12 декабря 2018

Подробнее о параметре state можно узнать из этого ответа .

Где генерировать состояние и где хранить, будет зависеть от характера вашего приложения.Независимо от типа клиента клиент должен проверить параметр состояния в ответе кода авторизации.

Для одностраничного приложения, которое не содержит бэкэнда, необходимо будет сгенерировать и сохранить состояние в самом браузере.,После получения ответа необходимо сравнить значение состояния.

Для собственного приложения (например, - Мобильное приложение) состояние может быть сохранено в памяти приложения.Его можно добавить в запрос авторизации.Когда приходит ответ, его можно проверить из памяти

При желании приложения состояние может быть сохранено в бэкэнде (например: - сервер).Это можно считать более безопасным (по сравнению с SPA), учитывая, что никто не может перехватить / получить значение, кроме как из самого запроса.Как только происходит перенаправление, бэкэнд может проверить параметры ответа.Более того, его можно использовать для корреляции сеанса клиента.

Кроме того, кража значения состояния полезна только для стороны, которая пытается осуществить CSRF-атаку.Но будьте внимательны, чтобы генерировать государственные ценности, которые невозможно угадать.Дальнейшее чтение для хранения - 3.6.Параметр "состояние"

...