2008-10-17 3 views
1

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

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

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

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

ответ

6

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

+0

В целом стоит удостовериться, что GUID - это «однократная хорошая сделка», и после выполнения миссии она предотвращает повторный запуск GUID. – 2008-10-17 16:16:47

2

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

5

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

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

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

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

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

Смежные вопросы