Создание безопасной ссылки «Просмотр электронной почты в браузере» для HTML-писем - PullRequest
0 голосов
/ 30 марта 2012

Мой сайт PHP codeigniter отправляет пользователям 3 типа электронных писем, они отформатированы в формате html, и я хочу иметь опцию «просмотреть это письмо в браузере».

Как мне создать достаточно безопасную ссылку? 2 письма имеют чувствительный характер:

  1. Новая регистрация: электронная почта показывает их данные и ссылку для активации

  2. Забыли пароль: в электронном письме указана ссылка для сброса пароля


Достаточно ли просто сделать что-то подобное ?:

$code = sha1(mt_rand(10000,99999).time().$user_email);

$link = 'email/view/' . $code . '/' . $user_id . '/';

        => http://mysite.com/email/view/c0acc09c6d00b706e1e511e52f286b1859067047/213/


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

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

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

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

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

1 голос
/ 30 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...