Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
Привет всем, в 5.6 есть набор функций password_hash - хэширует пароль (каждый раз получается новый хэш от одного и того же пароля.)
Поэтому для сравнения использувется password_verify, в него передаётся пароль и хэш, на выходе bool.
Так как хэш всегда разный, просто при авторизации хэшировать пароль и сравнивать в бд, не подходит.
Хороший ли вариант, выбрать все хэши из бд, и сравнить через password_verify, но получается большая выборка, длинный цикл...=\
Как лучше?
Мелкий
Отправлено: 01 Сентября, 2015 - 14:02:46
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
А у вас что, есть только пароль? Никакого логина, емейла?
----- PostgreSQL DBA
IGORtrue
Отправлено: 01 Сентября, 2015 - 14:04:21
Частый гость
Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
Мелкий пишет:
А у вас что, есть только пароль? Никакого логина, емейла?
Есть email ещё.
Проблема в том, что password_hash от одного и того же пароля даёт постоянно разные хэши.
Мелкий
Отправлено: 01 Сентября, 2015 - 14:13:07
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
IGORtrue пишет:
Проблема в том, что password_hash от одного и того же пароля даёт постоянно разные хэши.
Почему это проблема-то?
0) Вытащили сохранённый пароль по емейлу
1) если password_verify сказал false - отлуп, пароль неверный.
2) если password_needs_rehash, то обновили пароль в базе.
3) авторизуете пользователя
----- PostgreSQL DBA
IGORtrue
Отправлено: 01 Сентября, 2015 - 14:17:24
Частый гость
Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012
Помог: 0 раз(а)
Мелкий пишет:
IGORtrue пишет:
Проблема в том, что password_hash от одного и того же пароля даёт постоянно разные хэши.
Почему это проблема-то?
0) Вытащили сохранённый пароль по емейлу
1) если password_verify сказал false - отлуп, пароль неверный.
2) если password_needs_rehash, то обновили пароль в базе.
3) авторизуете пользователя
=\
И чего я так тупанул, спасибо.
А вы работали с этими функциями? Внедряли уже куда?
DeepVarvar
Отправлено: 01 Сентября, 2015 - 14:31:14
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
А шо там внедрять?
Кстати, хеши разные, но "сумма" их составляющих -- одинаковая, отсюда и прикол такой.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Палочкой тыкал, а в боевой системе - нет, как-то не довелось. В одном проекте не успел PHP обновить, а в нынешнем проекте пароли хэширует и верифицирует непосредственно база. И я недостаточно компетентен в криптографии, чтобы обосновать, делаем ли мы сейчас это неправильно
----- PostgreSQL DBA
DeepVarvar
Отправлено: 01 Сентября, 2015 - 14:40:46
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DeepVarvar, вы наркоманы. Непосредственно в мануале общепринятая ссылка висит: https://github[dot]com/ircmaxell/password_compat
И да, я там не успел обновить PHP именно настолько, что bcrypt не проходил этот тест совместимости. Хорошо подтянул код проекта, но непосредственно проапгрейдиться уже не успел.
PS: _generateSalt - так делать с точки зрения криптографии нельзя. mt_rand не CSPRNG, надо использовать openssl_random_pseudo_bytes или другой стойкий генератор мусора. И вы разве не в соответствии с psr собирались писать?
----- PostgreSQL DBA
DeepVarvar
Отправлено: 01 Сентября, 2015 - 17:42:07
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Мелкий пишет:
mt_rand не CSPRNG
А можно иссуйкой на гитхабе чтобы не забыть?
UPD: Ааааа, верно, я таки помню, оставил на пока мт_ранд т.к. не стал заморачиваться с ОС зависимостями где взять рандом.
А сами примеры были почерпнуты из других мест, в частности, то-ли из CI то-ли из Yii.
Ну, туда тоже гляну, сравню, дополню, исправлю.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.