Добрый день)
Нашёл одну задачку. Простую на первый взгляд. Но смущают некоторые условия.
1. Запрос ссылки на восстановление пароля происходит при вводе email. Никакой промежуточной информации никуда записывать нельзя, только генерируем ссылку и отправляем письмо на почту.
2. У ссылки есть срок жизни.
3. Ссылка валидна только для конкретного email.
___________________
Под "никуда записывать нельзя" полагаю попадают бд/файлы. Предполагаем время жизни ссылки 24 часа. Остаются только куки, верно? Где-то ведь надо хранить ключ для восстановления и, собственно, время его действия. Но как тогда дела с безопасностью будут обстоять? И как выполнить 3 пункт?
Мне с ходу приходит только один покачто вариант. Генерировать хеш ссылку где будет допустим в хеше эмейл, время создания и соль. Далее как открытые параметры может быть например тот-же эмейл и время. При переходе по такой ссылке скрипт берет открытые параметры, добавляет соль и смотрит совпал ли его хэш с тем который есть в параметре. Если нет, то ссылку подделали. Потом если ссылка валидна берет время прибавляет 24 часа и если уже прошло больше то все, ссылка не валидна опять
07 Фев 2017, 11:34Удобнее, конечно, было бы с дополнительным полем, оно бы много места не заняло.
Но если никак без этого - тогда с солью. Единственное замечание - не используйте только MD5, а то хакнут вашу соль радужными таблицами, а это приведет к глобальной уязвимости сайта.
Jaguar, в 2017 году? Довольно безопасна, но время идет. Зачем использовать md5, если есть определенно более безопасные и встроенные методы PHP http://php.net/manual/ru/function.password-hash.php ?
08 Фев 2017, 10:05http://www.phptherightway.com/#password_hashing
рекомендую конкретно эту статью и вообще весь сайт почитать.
Где-то вроде бы есть и русскоязычный перевод, если ты не дружишь с инглишем.
добавлено спустя 43 секунды:
http://getjump.me/ru-php-the-right-way/#Хэширование_пароля собственно вот. Но если норм - лучше читай английский, сайт более актуально обновляется
добавлено спустя 2 минуты:
Josh Lockhart - Modern PHP. New Features and Good Practices - 2015 советую почитать эту книгу. Пусть и на английском, может ее уже перевели, она довольно актуальна. Там много полезных приемов современного PHP и довольно хорошо разбирается принцип хеширования паролей