#Адрес электронной почты
Вопрос:
Я разрабатываю электронное письмо для обобщения состояний пользователей, и в этом электронном письме пользователям было бы предложено предпринять действия в своих учетных записях. Итак, мне интересно, есть ли способ разрешить пользователям сразу входить в свою учетную запись с электронной почты без дополнительного шага входа в систему?
Комментарии:
1. вход в веб-приложение? (настольное приложение, телефон, другое?)
Ответ №1:
Конечно. Если вы пишете приложение, возможно все.
Обычный способ добиться этого — включить «аутентификатор» в каждую ссылку, которую вы предоставляете приложению. Где, когда мы говорим «аутентификатор», мы имеем в виду «случайные буквы и цифры».
Каждая ссылка, которую вы включаете, может выглядеть как:
<a href="...?auth=ilTmMDiTL0d46ZmNfDOpme84t3E8XdEbeFbRSZyCSoAiIkGFr2gRQnRFrtmaA4i">Delete My Account Forever</a>
Чтобы это сработало, в вашей базе данных потребуется записать, что ilTmMDiTL0d46ZmNfDOpme84t3E8XdEbeFbRSZyCSoAiIkGFr2gRQnRFrtmaA4i
это действительный аутентификатор для получения доступа, скажем, к учетной записи VoteyDisciple
. Итак, когда появится эта строка, вы знаете, что нужно авторизовать меня.
Проблема, конечно, в том, что если кто-нибудь еще когда-нибудь увидит это электронное письмо (в том числе, если я перешлю его кому-нибудь), они тоже могут щелкнуть ссылку и теперь выдавать себя за меня! Вы можете несколько смягчить это, установив ограничение по времени, как долго действует такой аутентификатор, ограничив его использование только одним конкретным действием (например, «Я позволю вам выполнить X, но затем, если вы захотите сделать что-нибудь еще, вам нужно будет войти в систему), или другими способами.
Но, в конце концов, тот факт, что ваша цель — позволить людям «входить» без входа в систему, предполагает, что это не среда с высоким уровнем безопасности, поэтому риск того, что аутентификатор может быть скомпрометирован, может не вызывать большого беспокойства.
Комментарии:
1. Понял тебя. Спасибо за быстрый ответ.
Ответ №2:
Вы могли бы сгенерировать уникальный одноразовый URL, позволяющий пользователю входить в систему, сохранив token
в базе данных и связав его с учетной записью пользователя. Вы могли бы структурировать URL следующим образом, если хотите:
http://www.example.com/login.php?token=EWYAOpJBHgEioVrWRDzeDGhySEyOGKpsaUIe0EnF
Случайный материал в конце было бы практически невозможно взломать грубой силой, поскольку вы можете сделать его сколь угодно длинным.
Как только пользователь войдет в систему, используя этот URL, вы можете предотвратить его повторное использование, перенаправив его на домашнюю страницу, выдав сообщение об ошибке, в котором говорится, что URL был временным и срок его действия истек, или предложив пользователю кнопку, которая отправляет электронное письмо с другим URL.
Но я думаю, было бы лучше, если бы вы просто предоставляли пользователю частично заполненную форму (содержащую только имя пользователя), когда они нажимали на ссылку, поскольку этот URL-адрес можно было бы переработать или оставить умирать, не беспокоясь о мошенническом взломе.