Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: password_hash -- глюк или есть объяснение?
Покинул форум
Сообщений всего: 209
Дата рег-ции: Май 2014
Помог: 0 раз(а)
Прыуэт.
Столкнулся вчера с такой хренью, скрипт выполняется более 1 мин.
Как оказалось, это все из-за ф-ии password_hash, а именно в синтаксическом вписывания аргумента в виде массива.
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Цитата:
cost - which denotes the algorithmic cost that should be used.
Цитата:
If ommitted, a default value of 10 will be used. This is a good baseline cost, but you may want to consider increasing it depending on your hardware.
Вкратце - это "стоимость" ресурсов затрачиваемых на генерацию хеша. Или алгоритмические расходы, если хотите. Значение по умолчанию (10) - вполне приемлемое, но при необходимости и имея мощный сервер, вы можете увеличить это значение.
----- Чем больше узнаю, тем больше я не знаю.
MiksIr
Отправлено: 20 Января, 2016 - 12:21:07
Забанен
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
Один из основных способов защиты от нахождения пароля методом перебора - повышение вычислительных затрат на расчет хеша. По-этому, нельзя использовать для хеширования пароля всякие sha1, hash('sha256') и т.п. Еще в 90-х годах, когда был придуман crypt_md5, там делалось тысячу итераций md5. Сейчас это считается ненадежным. Поскольку вычислительные мощности растут, что бы постоянно не внедрять новые алгоритмы - придумали дать возможность задавать число итераций при создании хеша. Например, в случае crypt_blowfish изменение числа на единицу увеличивает время расчета в два раза. Я бы рекоменовал выбирать значение, что бы время расчета на сервере составляло 0.2-0.5 секунды.
----- self-banned
arimanecro
Отправлено: 20 Января, 2016 - 12:23:33
Частый гость
Покинул форум
Сообщений всего: 209
Дата рег-ции: Май 2014
Помог: 0 раз(а)
DelphinPRO
спс за разъяснение.
убрал cost и всё пашет по-быстроляну )
==========
Только не понятно, про какие ресурсы идет речь? Если проц или оперативка, то на момент выполнения скрипта, они НЕ работают на 100%
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
arimanecro пишет:
Только не понятно, про какие ресурсы идет речь?
MiksIr расписал более подробно. (Добавление)
Речь идет о вычислительной скорости.
Чтобы пароль нельзя было подобрать перебором (в разумные сроки), алгоритм должен быть медленным. Грубо говоря, cost "замедляет" алгоритм, если так понятнее.
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
arimanecro пишет:
Если проц или оперативка, то на момент выполнения скрипта, они НЕ работают на 100%
Проц. Должен работать на 100%, но только одно из ядер (ибо один процесс). Если у вас загрузка показывается суммарная по ядрам, то будет не 100%. Оперативка тоже, но в менее заметной степени по сравнению со скриптами, так что можете и не увидеть.
Verifies that the given hash matches the given password.
Note that password_hash() returns the algorithm, cost and salt as part of the returned hash. Therefore, all information that's needed to verify the hash is included in it. This allows the verify function to verify the hash without needing separate storage for the salt or algorithm information.
в ответе выше, я говорил, что в password_hash, я cost вообще не ставил.
Так какого хэ password_verify так медленно работает?
==============
стало понятно, тот хэш был создан при косте 20, поэтому он и проверяет так долго.
Но тут ещё такая хрень появилась, пароль зашифрованный при помощи password_hash(), содержащий точку, например:
Verifies that the given hash matches the given password.
Note that password_hash() returns the algorithm, cost and salt as part of the returned hash. Therefore, all information that's needed to verify the hash is included in it. This allows the verify function to verify the hash without needing separate storage for the salt or algorithm information.
в ответе выше, я говорил, что в password_hash, я cost вообще не ставил.
Так какого хэ password_verify так медленно работает?
==============
стало понятно, тот хэш был создан при косте 20, поэтому он и проверяет так долго.
Вроде действительно понятно что при проверке он будет хешировать так же как был захеширован хеш с которым идет сравнение.
arimanecro пишет:
Но тут ещё такая хрень появилась, пароль зашифрованный при помощи password_hash(), содержащий точку, например:
Вы случайно хеш без экранирования куском текста(кода) не вставили
хм, а по другому никак, ведь при вставке в БД(с учетом препарированного запроса), данный хэш и вставляется как строка, без всякого экранирования. А как иначе?
TuX560
Отправлено: 26 Января, 2016 - 08:13:11
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015
Помог: 3 раз(а)
arimanecro пишет:
хм, а по другому никак, ведь при вставке в БД(с учетом препарированного запроса), данный хэш и вставляется как строка, без всякого экранирования. А как иначе?
Вот именно как строка, а у Вас он воспринимается как код на php, покажите исходники.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.