В настоящее время я внедряю Facebook Login на своем веб-сайте в первый раз, и у меня есть некоторые сомнения относительно того, насколько это безопасно.
У меня уже есть база данных с пользователями и для каждого из них, я храню адрес электронной почты, поэтому мне действительно нужно проверить, есть ли адрес электронной почты, который я получаю от Facebook, уже присутствует в моей базе данных или нет, иначе я бы некоторые проблемы с дублирующимися пользователями. Если пользователь уже присутствует, я просто объединяю данные из Facebook в существующую учетную запись на своем веб-сайте и подключаю пользователя. В противном случае я создаю для него учетную запись.
Но вот что:
-
Алиса подключается на моем сайте, используя адрес электронной почты [email protected], но Алиса не зарегистрирована на Facebook с этим адресом электронной почты
-
Боб регистрируется в Facebook с использованием адреса электронной почты Алисы [email protected] и проверяет учетную запись, используя SMS-сообщение, полученное по любому номеру телефона (я проверил, и это возможно, учетная запись может быть проверена без нажатия на полученную ссылку по электронной почте). Я согласен с тем, что Алиса будет уведомлена по ее адресу электронной почты, но все же это возможно.
-
Боб запускает логин на моем сайте, используя соединение facebook, будучи подключенным к Facebook с использованием адреса электронной почты Алисы.
-
Аккаунт Bob Facebook активен и проверен, и я должен предположить, что у него уже есть учетная запись на моем веб-сайте, так как [email protected] уже находится в моей базе данных, поэтому я связываю его вместо Алисы, и он может использовать мой сайт на учетной записи Алисы.
= > Я пробовал этот сценарий на нескольких сайтах, и я мог подключиться к чужой учетной записи (поддельная учетная запись Facebook, которую я создал;)), если я знал адрес электронной почты.
Есть ли у кого-нибудь идея о том, как предотвратить эти ситуации?