Подтвердить что ты не робот

Потенциальная проблема безопасности при входе в Facebook?

В настоящее время я внедряю Facebook Login на своем веб-сайте в первый раз, и у меня есть некоторые сомнения относительно того, насколько это безопасно.

У меня уже есть база данных с пользователями и для каждого из них, я храню адрес электронной почты, поэтому мне действительно нужно проверить, есть ли адрес электронной почты, который я получаю от Facebook, уже присутствует в моей базе данных или нет, иначе я бы некоторые проблемы с дублирующимися пользователями. Если пользователь уже присутствует, я просто объединяю данные из Facebook в существующую учетную запись на своем веб-сайте и подключаю пользователя. В противном случае я создаю для него учетную запись.

Но вот что:

  • Алиса подключается на моем сайте, используя адрес электронной почты [email protected], но Алиса не зарегистрирована на Facebook с этим адресом электронной почты

  • Боб регистрируется в Facebook с использованием адреса электронной почты Алисы [email protected] и проверяет учетную запись, используя SMS-сообщение, полученное по любому номеру телефона (я проверил, и это возможно, учетная запись может быть проверена без нажатия на полученную ссылку по электронной почте). Я согласен с тем, что Алиса будет уведомлена по ее адресу электронной почты, но все же это возможно.

  • Боб запускает логин на моем сайте, используя соединение facebook, будучи подключенным к Facebook с использованием адреса электронной почты Алисы.

  • Аккаунт Bob Facebook активен и проверен, и я должен предположить, что у него уже есть учетная запись на моем веб-сайте, так как [email protected] уже находится в моей базе данных, поэтому я связываю его вместо Алисы, и он может использовать мой сайт на учетной записи Алисы.

= > Я пробовал этот сценарий на нескольких сайтах, и я мог подключиться к чужой учетной записи (поддельная учетная запись Facebook, которую я создал;)), если я знал адрес электронной почты.

Есть ли у кого-нибудь идея о том, как предотвратить эти ситуации?

4b9b3361

Ответ 1

Если это правда, что Facebook не нуждается в подтверждении электронной почты, а затем выступает в качестве провайдера в стиле openid, тогда это шокирует! Но я думаю, что ответ уже в вашем вопросе - не связывайте/объединяйте аккаунты. Или, по крайней мере, не делайте этого с помощью попытки входа в facebook, не подтвердив сначала электронное письмо.

Вы не можете изменить то, что делает friendface, поэтому вам нужно обработать адрес электронной почты, предоставленный с помощью facebook, как ненадежные данные. Если попытка входа в систему Facebook-connect выполняется с электронной почтой, которая уже имеет собственную учетную запись на вашем сайте, отправьте им код подтверждения по электронной почте самостоятельно и сделайте то, что не удалось сделать в facebook.

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

Ответ 2

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

Логотипы Facebook не должны приниматься, если этот адрес электронной почты уже зарегистрирован на сайте. Он может называться "facebook login", но не забывайте, что это действительно новая учетная запись базы данных сайта и должна рассматриваться как одна.

В заключение, если сайт использует адреса электронной почты в качестве уникальной идентификации, не должен принимать логины facebook с тем же адресом электронной почты.

Ответ 3

У меня уже есть база данных с пользователями и для каждого из них я храню адрес электронной почты, поэтому мне действительно нужно проверить, не адрес электронной почты получить от Facebook уже присутствует в моей базе данных или нет, иначе У меня возникнут проблемы с дублирующимися пользователями. Если пользователь уже настоящее, я просто объединять данные из Facebook в существующую учетную запись на моем веб-сайте, и я подключаю пользователя. В противном случае я создаю учетную запись для него.

Это не то, как вы должны справиться с этим. Вы должны разрешить пользователю самостоятельно ссылаться на учетную запись Facebook. Вы также можете разрешить новым пользователям использовать только информацию для входа в Facebook. Вы не должны хранить учетную запись учетной записи Facebook, используемую для создания учетной записи. Это означает, что Facebook, зарегистрированный на [email protected] и учетная запись на вашем сайте, зарегистрированная на [email protected], будет полностью двумя разными учетными записями.

Alice connects on my website using email address [email protected] but Alice is not registered on Facebook with that email address

Это означает, что Алиса не заходила бы через процесс OAuth Facebook.

Боб регистрируется в Facebook, используя адрес электронной почты Алисы [email protected] и проверьте учетную запись, используя SMS-сообщение, полученное по любому номеру телефона (I проверяется, и это возможно, учетная запись может быть проверена без нажав на ссылку, полученную по электронной почте). Я согласен с тем, что Алиса уведомляется по ее адресу электронной почты, но все же это возможно.

Это не проблема. У Алисы есть возможность удалить учетную запись Facebook.

Боб запускает логин на моем веб-сайте, используя соединение facebook, в то время как подключенном к Facebook, используя адрес электронной почты Алисы.

Почему ты беспокоишься об этом. Если Боб создал учетную запись Facebook, то это его учетная запись на Facebook. Если Алиса не свяжет счет Bob Facebook с ее учетной записью на своем веб-сайте, что это важно? Все, что вам нужно сохранить, - это то, что необходимо для отслеживания профиля для этой учетной записи Facebook точно так же, как этот сайт. Поскольку у вас будет "классическая" система, вам нужно сделать руководство по процессу компоновки, если вы не избавитесь от этого, который вам нужен.

Аккаунт Bob Facebook активен и проверен, и я должен предположить, что он уже имеет учетную запись на моем веб-сайте, так как [email protected] уже находится в моя база данных, поэтому я связываю его вместо Алисы, и он может использовать мои сайт на странице Алисы

Процесс связывания должен быть ручным процессом Алисы.

Есть ли у кого-нибудь идея о том, как предотвратить эти ситуации?

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

Я пробовал этот сценарий на нескольких сайтах, и я мог подключиться к нему чужой счет (поддельная учетная запись Facebook, которую я создал;)), пока я знал адрес электронной почты.

Я обещаю вам, что вы не подключались к учетной записи другого человека. Вы создали новую учетную запись, связанную с созданной вами учетной записью Facebook, вы можете сделать то же самое на любом веб-сайте, поддерживающем OAuth.