Кнопка входа в Google - Что мешает кому-либо подделать другое приложение и украсть токен? - PullRequest
0 голосов
/ 08 сентября 2018

Используя эту страницу: https://developers.google.com/identity/sign-in/web/sign-in

Действительно просто добавить кнопку на страницу для только для клиентской стороны входа в систему с помощью Google.

При нажатии кнопки пользователю предоставляется экран, подобный следующему:

google auth popup

Для этой кнопки есть 2 ux_mode: "popup" и "redirect": https://developers.google.com/identity/sign-in/web/reference

Мой вопрос касается конкретно ux_mode = popup, когда исходная страница не изменяется, а весь поток входа обрабатывается в отдельном всплывающем окне.

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

Теперь я понимаю, что в этом режиме (всплывающее окно) IDP (Google) будет отклонять все, что не исходит от источника, который не является частью явного списка URI перенаправления, установленного в конфигурации проекта.

Но разве это единственное, что этому мешает? Я читал снова и снова, что не следует полагаться на CORS для обеспечения безопасности. Также я не уверен, но кажется, что это может быть обойдено с небольшой обработкой.

Есть ли еще какой-то аспект безопасности этого потока входа, который я пропускаю?

1 Ответ

0 голосов
/ 08 сентября 2018

Я не знаю реализацию Google, но с точки зрения OAuth 2:

1 / «Пользователь, считающий, что это хорошее приложение», должен проверить адресную строку и зеленый замок в своем браузере. Это считается ответственностью пользователя.

2 / вы зарегистрировали URI перенаправления, которые проверяются, когда клиент пытается получить токен доступа. Так что Google будет отказываться генерировать и перенаправлять браузер пользователей на вредоносное приложение с токеном.

3 / браузер будет отклонять любой обмен данными между всплывающим окном и другими веб-страницами, поскольку они не принадлежат одному источнику. Это называется политикой того же происхождения и считается важной функцией безопасности браузера.

В общем: местоположение приложения / uri / origin / domain (как вы хотите) - это то, что идентифицирует ваше приложение, и безопасность основана на этом.

Надеюсь, это помогло.

...