Другие языки программирования и технологии
PHP - как сделать на сайте "восстановление пароля", если пароли в бд хранятся в виде md5 хеш кодов?
PHP - как сделать на сайте "восстановление пароля", если пароли в бд хранятся в виде md5 хеш кодов? обратно их же не восстановишь, а записывать в файл тоже как-то глупо т.к при получении злоумышленником этого файла все старания будут напрасны...
Соглашусь со всеми.
Вам стоит сделать следующее:
1) Пользователь кликает на "Восстановить пароль"
2) Отвечает на секретный вопрос, который установил при регистрации
3) Проверяем все данные, которые он ввёл, на верность
4) Если хорошо всё, то собираем письмо в котором будет ссылка
5) Как пришло письмо на почту к юзеру, он проходит по ссылке
6) Попадает на страницу, где создаёт новый пароль.
7) Сохраняет.
8) Пароль, который он ввёл пропускаем через md5() и в базу.
В ссылке стоит указывать какие-нибудь ключи, по которым система будет понимать, что за юзер хочет восстановить пароль. Но тупо ссылку делать не стоит, иначе я смогу поменять пароли кому угодно. Возможно сделать табличку где сохранять текущие "восстановления паролей", где записи хранить не более часа. а после восстановления удалять сразу же. Подумайте ещё над этим вопросом.
Вам стоит сделать следующее:
1) Пользователь кликает на "Восстановить пароль"
2) Отвечает на секретный вопрос, который установил при регистрации
3) Проверяем все данные, которые он ввёл, на верность
4) Если хорошо всё, то собираем письмо в котором будет ссылка
5) Как пришло письмо на почту к юзеру, он проходит по ссылке
6) Попадает на страницу, где создаёт новый пароль.
7) Сохраняет.
8) Пароль, который он ввёл пропускаем через md5() и в базу.
В ссылке стоит указывать какие-нибудь ключи, по которым система будет понимать, что за юзер хочет восстановить пароль. Но тупо ссылку делать не стоит, иначе я смогу поменять пароли кому угодно. Возможно сделать табличку где сохранять текущие "восстановления паролей", где записи хранить не более часа. а после восстановления удалять сразу же. Подумайте ещё над этим вопросом.
>> т. к при получении злоумышленником этого файла все старания будут напрасны.. .
если злоумышленник сможет получить доступ к такому файлу что ему помешает выполнить запрос в базу и поставить тот пароль который ему нужен?)) )
и лучше вариант который предложил коллега выше!
если злоумышленник сможет получить доступ к такому файлу что ему помешает выполнить запрос в базу и поставить тот пароль который ему нужен?)) )
и лучше вариант который предложил коллега выше!
обычно не старый пароль восстанавливают, а создают новый
генерируешь новый пароль и отсылаешь пользователю, а он потом может зайти в личный кабинет и изменить на тот что ему нужен.
Похожие вопросы
- PHP. Что будет если получить хэш пароля таким образом: echo md5(md5(md5("SUPER_PUPER_PASS_12345"))); Так надежнее? :)
- восстановление пароля в icq 7.5. Переставил виндовс и забил пароль, через сайт восстановить не могу. ПОМОГИТЕ
- Что делать если я поставил пароль на карту памяти для телефона и забыл код? (комп не видит флешку)
- Как вставить php скрипт в html сайт?
- PHP. Что быстрее? Записывать данные в txt файл или в БД?
- MySQL и PHP SELECT * FROM `users` Как вывести определенную информацию из графы БД, человека который сейчас авторизован
- Как бесплатно сделать себе сайт?
- Кто сможет мне сделать красивый сайт на четыре-пять страничек? С бесплатным хостингом, например, на народе. Договоримся
- сколько времени примерно нужно для изучения HTML, XHTML, PHP для написания полноценного сайта
- с помощью какого движка можна создать видеопортал типа youtube, где видео храниться в виде ссылок с youtube
Я сделаю наверное вот так:
1) Пользователь кликает на "Восстановить пароль"
2) Отвечает на секретный вопрос, который установил при регистрации, вводит каптчу.
3) Проверяем все данные, которые он ввёл, на верность
4) Если все хорошо - создаем код подтверждения запроса, засовываем в бд его, отсылаем письмо с этим кодом.
5) Вводит код - получает новый сгенерированный пароль.
6) Если захочет - заходит в личный кабинет и меняет на свой. (я в таких ситуациях записываю на листке и запоминаю полученный)