Сообщение при регистрации пользователя

Обновлено: 05.07.2024

Давайте теперь реализуем регистрацию. Для этого сделаем отдельную страницу register.php . По заходу на эту страницу, пользователь должен увидеть форму, в которую он должен вбить желаемый логин и пароль:

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

Затем пользователь может зайти на страницу авторизации, ввести логин и пароль, под которым он зарегистрировался и авторизоваться.

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

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

Модифицируйте ваш код так, чтобы в базу автоматически сохранялась дата регистрации.

Авторизуем сразу при регистрации

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

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

Модифицируйте ваш код так, чтобы после регистрации пользователь автоматически становился авторизованным.

Добавляем id пользователя в сессию

Пусть кроме пометки об авторизации мы бы хотели записать в сессию еще и его id .

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

Запишите при регистрации в сессию еще и id пользователя.

Скрываем пароль

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

Сокрытие пароля таким образом конечно хорошо, но есть, однако, проблема - пользователь не видит, что вводит. Он может ошибиться при вводе какого-либо символа и зарегистрироваться не с тем паролем, с которым он хотел. Это будет печально:(, так как он затем не сможет авторизоваться на сайте.

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

Задача нашего сайта - проверить, что пароль и его подтверждение совпадают, так как логично, что в этом случае пользователь ввел именно то, что хотел ввести:

Проверка логина на занятость

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

Давайте напишем этот код:

Marik1993, спасибо! Но у меня возникает дополнительный вопрос, от кого придет это письмо? И куда именно вставить код? (Извиняюсь, за свою глупость)

Смотри, все зависит от хостинга. Если есть там почтовый сервер, то создай там мыло и отправляй. И можно указывать с какого мыла пришло. Создай отдельный php файл и напиши там скрипт, передавай ему данные и отправляй. А лучше напиши класс для отправки, сразу после регистрации.

Marik1993, огромное спасибо! Завтра посмотрю, разберусь, надеюсь, что все получится! Ещё раз огромное спасибо!

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

Отправка формы регистрации на e-mail
Здравствуйте! У меня возникла проблема. Не знаю, как сделать так, чтобы форма отправлялась на.

Отправка формы без регистрации
Здравствуйте! Есть форма, которая отправляется. К ней добавил скрипт, который должен отправлять ее.

На смартфонах устанавливают приложения. И далее, не задумываясь, открывают их с помощью одного или двух тапов. Приложение готово к работе. Если же входить куда-либо через браузер на компьютере, ноутбуке или на смартфоне, то появляются две кнопки для входа пользователя: авторизация и регистрация. Какая между ними разница и почему их нельзя путать?

p, blockquote 1,0,0,0,0 -->

p, blockquote 2,0,0,0,0 -->

p, blockquote 3,0,0,0,0 -->

Что такое регистрация

p, blockquote 4,0,0,0,0 -->

Как происходит регистрация? Когда пользователь первый раз где-либо регистрируется, то при этом, как правило, ему нужно придумать логин и пароль. Именно придумать, создать новый логин и к нему новый пароль.

p, blockquote 5,0,0,0,0 -->

В качестве логина может выступать либо адрес электронной почты, либо номер мобильного телефона, либо фамилия и имя, либо никнейм. Зачастую при регистрации есть важный момент: необходимо подтвердить свой Email, либо удостоверить свой номер смартфона.

p, blockquote 6,0,0,0,0 -->

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

p, blockquote 7,0,0,0,0 -->

Для чего все это, может, можно как-то попроще пройти регистрацию? Нет, потому что только таким образом можно доказать два необходимых факта. Во-первых, проверяется, что у вас есть доступ к почте или к телефону. Во-вторых, подтверждается, что вы правильно, без единой ошибки ввели адрес своей почты или номер своего мобильного.

p, blockquote 8,0,0,0,0 -->

Как подтвердить email-адрес или мобильный при регистрации

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

p, blockquote 9,0,0,0,0 -->

Кроме того, стоит проверить папку Спам в почте, письмо по ошибке могло попасть туда. Если же прошло достаточно времени, но письмо не удается найти, то, возможно, была допущена ошибка при вводе email. Стоит попробовать заново пройти регистрацию.

p, blockquote 10,0,0,0,0 -->

Если же письмо для подтверждения электронного адреса пришло, его нужно открыть и прочитать. Как правило, следует кликнуть по ссылке в этом письме. Этот клик по ссылке является доказательством того, что вы являетесь реальным пользователем почтового ящика.

p, blockquote 11,0,0,0,0 -->

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

p, blockquote 12,0,0,0,0 -->

p, blockquote 13,0,0,0,0 -->

p, blockquote 15,0,0,0,0 -->

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

p, blockquote 16,0,0,0,0 -->

Что означает повторная регистрация

p, blockquote 17,0,0,0,0 -->

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

p, blockquote 18,0,0,0,0 -->

p, blockquote 19,0,0,0,0 -->

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

p, blockquote 20,0,0,0,0 -->

p, blockquote 21,0,0,0,0 -->

p, blockquote 22,0,0,0,0 -->

Увы, при новой регистрации, как правило, уже нельзя восстановить те билеты, подписки, курсы, бонусы, баллы, которые хранились при прежней регистрации.

p, blockquote 24,0,0,0,0 -->

Авторизация: вход после регистрации

p, blockquote 25,0,0,0,0 -->

p, blockquote 27,0,0,0,0 -->

p, blockquote 28,1,0,0,0 -->

Выход: а что это такое

p, blockquote 29,0,0,0,0 -->

p, blockquote 30,0,0,0,0 -->

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

p, blockquote 31,0,0,0,0 -->

Рассмотрим примеры с кнопками для регистрации и авторизации для Яндекс.Почты, Yoomoney, РЖД, Ростелеком, Фейсбук, ВКонтакте. Приведенные примеры работают через браузер на компьютере или на смартфоне.

p, blockquote 32,0,0,0,0 -->

О приложениях на смартфоне здесь не упоминается. На телефоне устанавливается приложение, вводятся личные данные для регистрации или авторизации. И, как правило, на этом всё, потом уже не встречаются кнопки для регистрации или для авторизации.

p, blockquote 33,0,0,0,0 -->

Видео: Авторизация и регистрация, почему это две большие разницы

p, blockquote 34,0,0,0,0 -->

Яндекс Почта: Создать ID и Войти

p, blockquote 35,0,0,0,0 -->

p, blockquote 36,0,0,0,0 -->

p, blockquote 37,0,0,0,0 -->

Юмани: Создать кошелек и Войти

создать новый кошелек Юмани войти

h2 6,0,0,0,0 --> Рис. 2. В Юмани можно создать новый кошелек или войти в прежний кошелек.

Юмани – это электронные деньги, которые ранее были Яндекс.Деньги. Потом сервис был приобретен Сбербанком и сменил название. Были Яндекс.Деньги, стали Юмани.

p, blockquote 38,0,0,0,0 -->

p, blockquote 39,0,0,0,0 -->

p, blockquote 40,0,0,0,0 -->

p, blockquote 41,0,0,0,0 -->

p, blockquote 42,0,0,1,0 -->

p, blockquote 43,0,0,0,0 -->

Ростелеком личный кабинет: Зарегистрироваться и Войти

p, blockquote 44,0,0,0,0 -->

p, blockquote 45,0,0,0,0 -->

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

p, blockquote 46,0,0,0,0 -->

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

p, blockquote 47,0,0,0,0 -->

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

p, blockquote 48,0,0,0,0 -->

p, blockquote 49,0,0,0,0 -->

p, blockquote 50,0,0,0,0 -->

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

Разработка форм регистрации и авторизации

Код регистрационной формы

Ниже приведен HTML-код необходимый для создания формы регистрации. Сохраните его вфайле register.php.

Исходный код страницы авторизации

HTML-код страницы входа в систему приведен ниже. Сохраните его в файле login.php .

CSS-стили для оформления форм

Для улучшения внешнего вида форм примените к ним следующие CSS-стили:

Создание таблицы с учетными данными и подключение к базе данных

Следующий шаг – создание таблицы базы данных, содержащей учетные данные пользователей. В нашем случае таблица состоит всего из четырех столбцов:

  1. Порядковый номер ID, который для каждого нового пользователя увеличивается автоматически.
  2. Уникальное имя пользователя.
  3. Адрес электронной почты.
  4. Пароль.

Для быстрого создания таблицы базы данных можно использовать следующий SQL-запрос:

Теперь создайте файл config.php и сохраните в нем приведенный далее код для подключения к базе данных:

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

Исходный код для регистрации пользователей

Сохраните приведенный далее код в начале файла registration.php :

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

Функция авторизации

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

Приведенный далее код должен располагаться в начале файла login.php:

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

Как только мы получаем подтверждение правильности пароля, мы назначаем переменную $_SESSION[‘user_id’] для ID пользователя из базы данных. При необходимости на этом этапе передаются и значения для других переменных.

Ограничение доступа к страницам

Все, что нужно сделать для ограничения или предоставления доступа – это использовать в начале приведенного выше скрипта строку session_start().

Типичные ошибки и способы их решения

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

Некорректное имя переменной

Чаще всего ошибки в работе скрипта связаны с неверными именами переменных – как правило, с использованием букв в неправильном регистре. Именно поэтому крайне важно придерживаться одного и того же шаблона при выборе имен. К примеру, ключи в функции $_POST основаны на значениях, полученных из полей ввода в формах. Это означает, что $_POST[‘USERNAME’] и $_POST[‘username’] получат разные значения.

Переменные сессии не сохраняются при переходах между страницами

Пожалуйста, опубликуйте ваши комментарии по текущей теме статьи. За комментарии, подписки, дизлайки, отклики, лайки огромное вам спасибо!

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

Простой пример. Кто из нас не сталкивался с тем, что тупит перед формой входа, не помня, как именно он регался на этом сервисе: через почту или какую-то из соцсетей? И таких примеров тьма. Но самое грустное в том, что мы сами считаем это нормой, и чаще всего виним себя и свою забывчивость, тогда как чаще всего виноват в этом именно сервис.

Я решил написать подробную инструкцию без привязки к конкретному языку программирования или методологии проектирования. Чистая логика, которую каждый без труда сможет подогнать под себя и реалии своего проекта.

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

Реализовать схему регистрации, аутентификации и восстановления доступа посредством email и соцсетей.

Из-за универсальности инструкции, не допускается привязка к конкретным фреймоворкам, базам данных или программным решениям.

Кроме того, в схеме не реализована двойная аутентификация, так как она предполагает определённые технические решения (например, TOTP или SMS), которые также могут быть продиктованы особенностями продукта или бизнес-логики.

Инструкция представлена в виде набора сценарных схем с пояснениями. Отдельно описываются сложные или не очевидные сценарные моменты.

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

Важное значение имеют соединительные линии (стрелки) на схемах. Они могут быть двух видов: пунктирные (переходы) и сплошные (обмен данными). На основании пунктирных линий можно, например, спроектировать API.

  1. заполнение формы регистрации;
  2. подтверждение email.

Наличие аккаунта

Временный аккаунт

До того, как пользователь не подтвердил свой email, его аккаунт является временным. Это позволяет:

  • более гибко управлять правами доступа (например, таким пользователям можно ограничить набор разрешённых действий);
  • автоматически очищать базу от неактивированных аккаунтов (например, по прошествии определённого времени).

В базе данных временный аккаунт может отличаться от обычного простым булевым флагом — или же такие аккаунты могут вообще храниться в отдельной таблице.

Подтверждение email классическое: ссылка с GET-параметрами в письме.

Срок жизни подтверждающей ссылки

Повторное подтверждение

При использовании соцсетей схема регистрации во многом использует те же механизмы, что и логин — поэтому здесь они объединены.

Соцсеть не вернула email

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

Объединение аккаунтов

Таким образом, при соответствии email, у пользователя не дублируются аккаунты, а сервис получает больше статистической информации о своих пользователях.

Механика логина максимально простая: пользователь вводит email и пароль, после чего сервер проверяет их на соответствие.

Защита от брутфорса

Способ защиты от перебора часто связан с конкретным программным решением или библиотекой, которую вы используете. Могут учитываться сессии, куки, ip-адреса, вспомогательные факторы (вроде включенного JS) и многое другое. Не забывайте про защиту от перебора, это важно.

Восстановление доступа к аккаунту осуществляется в два этапа:

  1. заполнение формы восстановления;
  2. подтверждение: переход из письма и ввод нового пароля.

Подстановка email

Если пользователь в рамках текущей сессии уже вводил email в формах регистрации или логина, то при переходе к восстановлению доступа, соответствующее поле предзаполняется.

Отсутствие пароля

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

Если система обнаруживает отсутствие пароля в профиле, она проверяет, к какой соцсети привязан пользователь, и затем предлагает ему войти через эту соцсеть. Если же соцсеть по какой-то причине не была обнаружена, то запускается стандартная процедура отправки email со ссылкой на ввод нового пароля.

Срок жизни подтверждающей ссылки

Деактивация подтверждающей ссылки

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

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

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

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

Для упрощения архитектуры в этот раздел вынесены функции, которые используются более одного раза в системе. Их можно реализовать отдельно и обращаться к ним по мере необходимости. Удобно, быстро и сильно стабилизирует как саму разработку, так и поддержку продукта.

Тоже не сложно. Как правило, типов полей форм, которые надо валидировать, максимум 3-4, плюс один кастомный, по маске (RegExp). Логично вынести валидацию в отдельную функцию и применять к конкретным полям по необходимости. Благо, для любого фреймворка есть куча готовых решений на эту тему.

Отправка данных

Успешная аутентификация

Функция успешного логина. Подразумевает последующее перенаправление на целевую страницу. В схеме целевая страница представлена профилем с дефолтным состоянием (Nav.Profile, Default), однако хорошим тоном считается запоминать URL, с которого был вызван логин, и возвращать на него пользователя после успешной аутентификации.

Подсказка по логину через соцсети

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

Если у пользователя истёк срок жизни сессии, но в браузере сохранились куки соцсетей, вы можете дать ему простую подсказку — например, подсветить нужную соцсеть. Или даже вывести рядом с кнопкой соцсети его аватар.

Эта функция может быть вызвана везде, где есть необходимость регистрации или логина (на отдельных страницах, в форме комментариев и тп), однако её программная реализация может зависеть от механик авторизации конкретной соцсети или сервиса.

Очистка данных

Любые данные, попадающие на сервер из клиента (и не только), должны быть в обязательном порядке очищены от всякой гадости, вроде SQL-инъекций или неприятных штук вроде XSS. Это действительно важно, потому что потом может сказаться на жизнеспособности всего продукта и безопасности данных его пользователей.

Аналогично функции на клиенте, можно написать отдельную функцию валидации данных на сервере, которая будет принимать в качестве параметров сами данные и тип валидации (включая регулярные выражения). Вызывать такую функцию можно буквально в пару строк.

Отправка email

Для многих языков и фреймворков есть готовые нативные решения по отправке email (в том числе, с помощью SMTP). Так как письма могут отправляться из многих частей продукта, логично использовать для этого единую функцию.

Запись успешного входа

Очень часто нужно отслеживать активные сессии пользователя или сообщать ему о новых логинах. Для этого как минимум потребуется фиксировать все случаи успешной аутентификации. Можно записывать их в БД или вести отдельный лог — как вам удобнее.

Проверка на привязанные соцсети

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

Я много пишу про проектирование, разработку и продюсирование IT-проектов, и все свои материалы агрегирую в уютном телеграм-канале, велкам.

Отлично, спасибо большое за инструкцию! То, что надо!

Развели тут хабр

При том не просто хабр, а хабр-торт!

Боги сошли с небес и детально написали ТЗ

С точки зрения безопасности использовать для идентификации email. идентификация должна быть по логину а email всегда скрыт.
И да, пароли не шифруются а хэшируются!

Насчёт email спорно. Во-первых, логин — это неудобно, все привыкли вводить почты. Во-вторых, email нигде, кроме восстановления, можно и не светить. Да и там, при необходимости, можно повесить защиту от перебора.

Касаемо хэширования да, согласен, запарился. Исправил в статье.

Вы поймите что безопасность и "удобно", быстро и не согласуются между собой. Удобно вам-удобно атакующему. Быстро вам-быстро и атакующему.
email как минимум светится каждый раз когда человек логиниться на ваш сайт, а значит и во всяких запоминалках логинов. Для безопасности пользователя важно важно минимизировать засветку email как только можно.

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

К сожалению (или к счастью), за создание цифровых продуктов отвечают не только одни разработчики и специалисты по цифровой безопасности. Два года назад я в рамках одного проекта проводил исследование: почту в качестве предпочтительной формы регистрации и входа выбрали более 80% респондентов. Предпочтя её и обычному логину, и номеру телефона.

Ну и напоследок. Почта — не самая чувствительная часть персональных данных. Если речь идёт о взломах условных "запоминалок логинов", то там вообще другого уровня проблемы.

Я вас понял, вы как и многие к сожалению побежали по популярной в последнее время дорожке-делать то что хотят пользователи. Только вот в опросе вы забыли упомянуть что риски компреметации аккаунта повышаются, если использовать почту как средство идентификации. И сколько % пользователей после этого все еще выбрали бы почту? Более того-в случае компрометации аккаунта кто будет у пользователя виноват? Он сам думаете? Я думаю пользователь будет обвинять именно вас, и кстати весьма обосновано.

А расскажите, пожалуйста, как повышаются риски компрометации аккаунта, если пользователь использует почту, а не логин? Посредством социнженерии? В 99% случаев нет разницы, email или логин вытаскивать из доверчивых пользователей или из их скомпрометированных устройств.

И да, я, как вы выразились, "побежал по популярной дорожке" удобства пользователей. Почти все цифровые продукты — это бизнес. В наше время невозможно сделать продукт успешным, если он неудобен пользователям. А без успешности у него не будет денег. А без денег нечем будет платить разработчикам и прочим членам проектной команды. Как итог: если продукты не будут удобными, то такие "борцы", как вы, останетесь без работы.

И заметьте, я не призываю полностью отказываться от безопасности или даже серьёзно её снижать. Перечитайте статью.

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

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

Спасибо, с вами все ясно

Инструкция огонь. Делали подобные вещи для проекта реши-пиши с нуля и до всего из статьи доходили со временем ;-) Прочитать бы раньше. Но ещё будем прикручивать соцсети, так что обязательно перечитаю и сделаю подсказки через какую соц сеть логинились, если сессия пропала и в куках помним. Так просто и удобно!

Если пользователь пока не подтвердил email (или соцсеть его не вернула), то ему может быть доступна ограниченная функциональность (например, только просмотр). Блокировать или нет основную функциональность — это уже больше вопрос к основной механике продукта, как и объединение аккаунтов с разными email.

Более того, история с объединением аккаунтов вообще общая и не относится напрямую к регистрации (например, соцсеть может вернуть другой email — и тогда для появления "условий задачи" даже не понадобится отложенное подтверждение).

В целом, ваш вопрос справедлив, но ответить "универсально" я на него не могу, всё очень сильно зависит от особенностей конкретного продукта. Если выкинуть из требований, указанных в начале статьи, обязательность подтверждённого email, то достаточно будет просто убрать пару веток из схем.

Клёвый вопрос, спасибо. Этот кейс выходит за рамки непосредственно регистрации, но решаем довольно просто.

1. Если пользователь авторизован, и он прикрепляет новую соцсеть, то сначала мы проверяем, вернула ли соцсеть email. Если email не возвращён или email соответствует текущему, просто прикрепляем соцсеть к аккаунту.

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

Шаги 3 и 4 можно миксовать, в зависимости от особенностей продукта и целевой аудитории. Понятно, что этот алгоритм подойдёт далеко не всем, но его совершенно точно можно подпилить под себя.

Читайте также: