Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Восстановление пароля
Сообщения
Chizh

Добрый день)
Нашёл одну задачку. Простую на первый взгляд. Но смущают некоторые условия.
1. Запрос ссылки на восстановление пароля происходит при вводе email. Никакой промежуточной информации никуда записывать нельзя, только генерируем ссылку и отправляем письмо на почту.
2. У ссылки есть срок жизни.
3. Ссылка валидна только для конкретного email.
___________________
Под "никуда записывать нельзя" полагаю попадают бд/файлы. Предполагаем время жизни ссылки 24 часа. Остаются только куки, верно? Где-то ведь надо хранить ключ для восстановления и, собственно, время его действия. Но как тогда дела с безопасностью будут обстоять? И как выполнить 3 пункт?

06 Фев 2017, 15:08
Jaguar

Мне с ходу приходит только один покачто вариант. Генерировать хеш ссылку где будет допустим в хеше эмейл, время создания и соль. Далее как открытые параметры может быть например тот-же эмейл и время. При переходе по такой ссылке скрипт берет открытые параметры, добавляет соль и смотрит совпал ли его хэш с тем который есть в параметре. Если нет, то ссылку подделали. Потом если ссылка валидна берет время прибавляет 24 часа и если уже прошло больше то все, ссылка не валидна опять

07 Фев 2017, 11:34
Chizh

Jaguar, спасибо) тоже к этому варианту пришёл ближе к ночи)

07 Фев 2017, 17:15
Akdmeh

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

07 Фев 2017, 19:40
Jaguar

Akdmeh, md5(md5+соль) уже не безопасна?

08 Фев 2017, 9:15
Akdmeh

Jaguar, в 2017 году? Довольно безопасна, но время идет. Зачем использовать md5, если есть определенно более безопасные и встроенные методы PHP http://php.net/manual/ru/function.password-hash.php ?

08 Фев 2017, 10:05
Jaguar

Akdmeh,  нужно будет почитать. Спасибо за инфу

08 Фев 2017, 11:07
Akdmeh

http://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 и довольно хорошо разбирается принцип хеширования паролей

08 Фев 2017, 11:27
Анархист

Chizh,интересно..

10 Ноя 2019, 7:56
Friend

Akdmeh, Разве пароль не в мд5 записывают?

03 Дек 2019, 17:58
Ответить на тему