Механизм восстановления пароля пользователям.

asics

Новичок
Механизм восстановления пароля пользователям.

Хэши паролей хранятся в табличке с логинами и мэйлами.

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

Юзер жмет "Забыл пароль" > вводит в форму логин или емайл > cкрипт создает случайную комбинацию "sdrfg2erg5dg5gdg", заносит её в базу данных в ячейку 'remind' строки этого юзера и отправляет ему на почту письмо "Можете задать новый пароль на странице http://url.ru/remind.php?nom=sdrfg2erg5dg5gdg"


Когда юзер переходит по ссылке из письма на страницу http://url.ru/remind.php скрипт смотрит есть ли в базе строка с полем remind=sdrfg2erg5dg5gdg, если есть, предлагает задать новый пароль для логина в строке которого найден remind=sdrfg2erg5dg5gdg.

Имеет право на жизнь такая схема?
 

prolis

Новичок
asics
+ не забыть обнулить поле remind после смены пароля

-~{}~ 29.01.10 14:54:

Автор оригинала: asics
Может есть более изящная схема?
сразу заменить пароль на случайный и прислать его, вся изящность только в отсутствии необходимости дополнительного поля
 

asics

Новичок
смущает, что с восстановлением паролей смысл хеширования паролей теряется, если кто-то через sql-иньекцию сможет читать/писать в базу он поставит свой емайл и запросит туда пароль... Может тогда и не хешировать?Пароли чистые хранить?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
asics
при чем тут иньекция и твой первоначальный вопрос? Надо писать код без дырок. Да и если есть такая дырка, то пароль запрашивать не надо, достаточно будет переписать хэш пароля и все.
 

Alexandre

PHPПенсионер
. Может тогда и не хешировать?Пароли чистые хранить?
тогда еще больше вероятность утечки

хешировать надо с солью, md5( $psw+ $salt ) где $salt - некая предопределенная константа
 

ps2007

Новичок
>> хешировать надо с солью, md5( $psw+ $salt ) где $salt - некая предопределенная константа
$salt не обязательно должна быть константой. Можно хранить кроме пароля и соль. При установке/смене пароля генерируется соль, затем используя соль генерируется хеш пароля

>> Можно хранить кроме пароля и соль
Имел ввиду хеш пароля.
 

С.

Продвинутый новичок
Тогда смысл соли теряется, если ее хранить тут же с хешем. Все равно что ПИН на карточке писать.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я бы сделал солью 1-3-5-7-9 символы хэша пароля. Просто зная что это так, всегда знаешь что за соль у пользователя и определенным хэшем, а сама соль переменная величина. Я неправ?
 

ps2007

Новичок
Тогда смысл соли теряется, если ее хранить тут же с хешем
Почему теряется ?
$hash = md5( $psw.$salt );
Допустим, что известен $salt и $hash. MD5 - это функция с односторонним шифрованием. Пароль никак не вычислишь.
Я неправ ?
 

Фанат

oncle terrible
Команда форума
$hash = md5( $psw );
Допустим, что известен $hash. MD5 - это функция с односторонним шифрованием. Пароль никак не вычислишь.
В чем разница?

(в принципе, она есть, но сначала логика)
 

Mols

Новичок
prolis
поддержу мнение о замене пароля сразу.
1. сохранится тот же механизм шифрования, что используется и для основной авторизации
2. будет использоваться таже логика авторизации, что и при стандартном входе
3. для входа будут использованы 2 параметра один из которых шифруется (логин, новый_пароль), вместо одного незашифрованного "remind"
ИМХО всё это значительно лучше.
 

Gas

может по одной?
Фaнaт
разница в том, что по словарям и часто встречающимся последовательностям давно есть готовые базы hash => значение (http://www.stottmeister.com/blog/2009/04/14/how-to-crack-md5-passwords/), наличие соли (особенно разной под каждый пароль, пусть даже она рядом хранится) эту проблему решает.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Sigorma
как сечас вижу, ключ для вконтакта, ключ для фейсбука, ключ для баду, ключ для дома, ключ от сортира, ключ от кофеварки)))

-~{}~ 29.01.10 17:43:

Хотя на сколько я помню ключики типа hasp были ранее, но успехом не пользовались.
 
Сверху