Регистрация пользователя с приглашением - PullRequest
2 голосов
/ 12 сентября 2010

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

http://myapp.com/user/register/56jk4564k6567kj686kjh56

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

Кроме того, при использовании кодов приглашения, есть ли необходимость в их шифровании?

Ответы [ 2 ]

1 голос
/ 12 сентября 2010

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

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

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

0 голосов
/ 12 сентября 2010

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

 $email = 'foo@bar';
 $check = md5('SECRET' . $email);
 $link = "register?email=$enail&check=$check"

на странице "регистрация", снова вычислить хэш и сравнить с тем, который указан в ссылке:

 $email = $_GET['email'];
 $check = md5('SECRET' . $email);
 if($check !== $_GET['check'])
    die("wrong link!");

upd: это всего лишь пример, в реальной жизни вы должны хранить соль вне основного кода:

 $salt = get_salt_from_config_file();
 $check = md5($salt . $email);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...