Какой алгорит восстановления пароля лучше.
----алгоритм 1.
а - юзер заполняет поле логин и имейл.
б - ищем в базе совпадение.
в - если совпадение найдено меняем пароль для него в базе и высылаем на имейл копию нового пароля с просьбой зайти на свой аккаунт и изменить новый пароль на что нибудь более подходящее.
----алгоритм 2.
а - юзер заполняет поле логин и имейл.
б - ищем в базе совпадение.
в - если совпадение найдено создаем новый рандомальный пароль.
г - записываем в сиссию новый пароль, ip юзера, уникальный номер юзера в базе.
д - высылаем на имейл ссылку из серии : website.com?newpas=Hlk73bjhdhyd7302nwkl
е - при возвращении юзера по ссылке проверяем newpas с тем что записано в сессии, проверяем ip, если все отлично меняем его пароль в базе и высылаем на имейл копию.
Все пароли прогоняютмся через md5 в уже подсоленом состоянии.
Возможно у кого то есть иные алгоритмы. Спасибо.
Спустя 6 минут, 26 секунд (7.03.2012 - 13:15) Visman написал(а):
Не надо отправлять все это автоматом.
Делаю ссылочку Забыли пароль?. Вот там юзер уже может запросить пароль на восстановление.
Делаю ссылочку Забыли пароль?. Вот там юзер уже может запросить пароль на восстановление.
Спустя 3 минуты, 10 секунд (7.03.2012 - 13:19) andrey888 написал(а):
Visman . Дак это понятно...
То же самое "Забыли пароль?" - переходим на страницу где уже и происходит все что написано выше. Вопрос в том какой алгоритм действий лучше.
То же самое "Забыли пароль?" - переходим на страницу где уже и происходит все что написано выше. Вопрос в том какой алгоритм действий лучше.
Спустя 3 минуты, 10 секунд (7.03.2012 - 13:22) Visman написал(а):
1. Отсылаем юзеру новый пароль и ссылку для его активации. Хэш пароля и ссылку записываем в базу.
2. При приходе по ссылке отосланной в письме сохраненный кэш пароля копируем в основной хэш пароля.
3. Просим зайти юзера на сайт с новым паролем.
2. При приходе по ссылке отосланной в письме сохраненный кэш пароля копируем в основной хэш пароля.
3. Просим зайти юзера на сайт с новым паролем.

Спустя 6 минут, 9 секунд (7.03.2012 - 13:28) andrey888 написал(а):
А ссылку зачем в базу записывать ? можно для этого использовать сессии .. ай пи и так далее .. для проверки что это тот же самый юзер..
Спустя 7 минут, 47 секунд (7.03.2012 - 13:36) Visman написал(а):
Цитата (andrey888 @ 7.03.2012 - 18:28) |
А ссылку зачем в базу записывать ? |
Не записывай, генерируй ее из хэша нового пароля+соль и через sha1
Цитата (andrey888 @ 7.03.2012 - 18:28) |
можно для этого использовать сессии |
20 минут или 24 и выкл

Спустя 4 часа, 45 минут, 43 секунды (7.03.2012 - 18:21) andrey888 написал(а):
Ты имеешь ввиду при изменении пароля записывать sha1(хеш + соль) в дополнительное поле в БД . этому юзеру .. и посылать ссылку с этим же .. после того как юзер из почты переходит по этой ссылки - сверяем хеш из ссылки с тем что было записано в БД , если все ок - меняем пароль и посылаем ему копию.. (либо даем поменять собственноручно на новый)
Я правильно понял тебя ?
Я правильно понял тебя ?
Спустя 18 минут, 56 секунд (7.03.2012 - 18:40) Visman написал(а):
Маленько не так.
В дополнительное поле базы записываешь хэш нового пароля - md5(новый пароль + соль)
А юзеру отправляешь пароль и ссылку сгенерированную с нового хэша - sha1(новый хэш+соль2).
При приходе же юзера по ссылке сверяешь ее с формулой sha1(новый хэш+соль2)
Т.е. в ссылках хэш пароля не участвует, участвует хэш хэша пароля.
В дополнительное поле базы записываешь хэш нового пароля - md5(новый пароль + соль)
А юзеру отправляешь пароль и ссылку сгенерированную с нового хэша - sha1(новый хэш+соль2).
При приходе же юзера по ссылке сверяешь ее с формулой sha1(новый хэш+соль2)
Т.е. в ссылках хэш пароля не участвует, участвует хэш хэша пароля.
Спустя 16 минут, 50 секунд (7.03.2012 - 18:57) andrey888 написал(а):
да да .. именно тоже самое имел ввиду , просто не правильно пояснил.
пойду этой дорогой .. так подумал - такой метод действителньо лучше чем сиссии куки либо автоматическая замена пароля и постановка юзера перед фактом что он уже изменен.. получите, распишитесь )).
Спасибо за респонс)
пойду этой дорогой .. так подумал - такой метод действителньо лучше чем сиссии куки либо автоматическая замена пароля и постановка юзера перед фактом что он уже изменен.. получите, распишитесь )).
Спасибо за респонс)
Спустя 14 часов, 42 минуты, 14 секунд (8.03.2012 - 09:39) andrey888 написал(а):
Сделал еще проще.
При запросе на восстановление пароля -
Записываем рандомальный хеш хеша в базу md5(rand + соль) через sha1(хеш + соль2)
Юзеру отправляю ссылку с первоначальным хешом md5(rand + соль)
При переходе юзера сверяю хеш в ссылке через формулу sha1(хеш + соль2) с тем что в базе
Если все гуд - выводим форму для заполнения нового пароля.
То есть никаких новых паролей не отправляем по мылу - просто вводим для запросившего идентификатор чтоб знать что для него нужно вывести форму нового пароля.
При запросе на восстановление пароля -
Записываем рандомальный хеш хеша в базу md5(rand + соль) через sha1(хеш + соль2)
Юзеру отправляю ссылку с первоначальным хешом md5(rand + соль)
При переходе юзера сверяю хеш в ссылке через формулу sha1(хеш + соль2) с тем что в базе
Если все гуд - выводим форму для заполнения нового пароля.
То есть никаких новых паролей не отправляем по мылу - просто вводим для запросившего идентификатор чтоб знать что для него нужно вывести форму нового пароля.
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )