Кнопка входа в Google. Что мешает кому-то подделать другое приложение и украсть токен?

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

Очень просто добавить кнопку на страницу для входа только на стороне клиента в Google.

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

всплывающее окно аутентификации Google

Для этой кнопки есть 2 ux_mode: "всплывающее окно" и "перенаправление": https://developers.google.com/identity/sign-in/web/reference

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

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

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

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

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


person benji    schedule 08.09.2018    source источник


Ответы (1)


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

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

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

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

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

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

person Ondřej Velíšek    schedule 08.09.2018