Лучший способ для подтверждения ссылки по электронной почте, чтобы отправить ID

StackOverflow https://stackoverflow.com/questions/212758

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть веб-сайт, который отправляет кому-то письмо с подтверждением.

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

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

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

Это было полезно?

Решение

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

Другие советы

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

Настройте обработчик http (cgi, php, servlet и т. д.) для получения запросов GET, основанных на URI, который выглядит примерно как " / verify_email / {hexdigest} " или " /confirm_email.php? code = {hexdigest} "

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

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

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

Вы можете передать GUID по электронной почте. Этот конкретный GUID должен быть связан с пользователем. Затем, когда пользователь щелкает ссылку, GUID отправляется обратно в приложение и может быть записан как QueryString. Извлеките GUID обновления, которое было одобрено пользователем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top