Какова максимальная длина пароля, которую я могу использовать с PHP 5.5 password_hash()
и password_verify()
?PHP password_hash() password_verify() максимальная длина пароля?
ответ
Хорошо, давайте пройдем через это.
Функция имеет лимит длины пароля. Как и все строки в PHP, он ограничен 2^31-1 байтами.
Чтобы быть понятным, PHP не имеет никакого отношения к чему-либо большему, чем это (по крайней мере, сегодня).
Таким образом, сама функция ограничена. Но как насчет основных криптоалгоритмов.
BCrypt is ограничен обработкой первых 72 символов пароля. Однако это обычно не проблема as explained in this answer.
Короче говоря, да она действительно есть эффективный предел (это будет только «использовать» первые 72 символов с по умолчанию и только алгоритм), и не это не проблема, и Вы не должны пытаться «исправить» или «смягчить» его.
Ограничение на 72 символа на пароле/парольной фразе, безусловно, является проблемой, даже больше, когда она молча информирует вас о том, что лишние символы просто игнорируются. –
Нельзя ограничивать длину функции password_hash.
Функция не имеет никакого предела, вам просто нужно сохранить свой memory_limit в виду, это должно быть все.
Edit: Вы должны ограничить длину пароля, в противном случае это может привести к замедлению работы сервера (в зависимости от алгоритма)
см Джанго: https://www.djangoproject.com/weblog/2013/sep/15/security/
Edit 2: уточнить: не должен быть пределом 14-20 символов, оно должно быть 4 КБ или более.
Неверно! Ограничение длины пароля - это не очень хорошая идея. Это не замедляет работу сервера и уменьшает энтропию ваших паролей. –
@ MadaraUchiha хорошо, вы действительно думаете, что это плохая идея установить предел примерно в 4 КБ (см. Ссылку в ответе)? Или вы действительно думаете, что кто-нибудь будет использовать пароль длиной 4 КБ? – bwoebi
@bwoebi: Я не думаю, что в вашей системе должен быть жесткий предел. Кроме того, blowfish отключит ваш пароль после нескольких символов. Все зависит от вашего алго. –
password_hash
сам не имеет предела длины.
Иглобрюхие, однако
имеет 64-битный размер блока и переменную длину ключа с 32 бит до 448 бит. Это 16-раундовый шифр Фейстеля и использует большие ключевые S-боксы. В структуре он похож на CAST-128, который использует фиксированные S-боксы. (Wikipedia)
Это означает эффективный предел 56 символов при использовании CRYPT_BLOWFISH в качестве шифра (который по умолчанию).
- 1. PHP password_hash(), password_verify()
- 2. Максимальная длина сгенерированного хэша при использовании password_hash?
- 3. php password_hash и password_verify issue
- 4. Использование password_hash и password_verify
- 5. Password_Hash, Mysql, SetFetchMode, Password_verify
- 6. password_hash, password_verify, непонимание MySQL?
- 7. Работа с Password_hash и password_verify
- 8. Подтвердить Минимальная/Максимальная длина пароля
- 9. php password_hash и password_verify issues no match
- 10. Использование функции password_hash и password_verify PHP 5.5
- 11. password_hash и password_verify возвращает ложные
- 12. Проблемы с использованием password_hash() и password_verify()
- 13. Функция password_hash() на php/получение недопустимого пароля
- 14. Password_hash и Password_verify, также хранить пароль?
- 15. password_verify - хеширование пароля
- 16. PHP максимальная длина массива
- 17. PHP FILTER_VALIDATE_URL Максимальная длина?
- 18. Как создать защиту паролем, используя php password_hash и password_verify
- 19. Password Hash issue with password_hash & password_verify
- 20. php ответ текст пуст при использовании password_hash или password_verify
- 21. PHP password_hash и password_verify посмотрел всего по-прежнему не работает
- 22. Почему php password_verify и password_hash используют разные идентификаторы шифрования?
- 23. Какова максимальная длина пароля в Subversion?
- 24. Попытка понять password_verify PHP
- 25. Максимальная длина или максимальная длина объекта JS?
- 26. PHP - password_verify issue
- 27. Ошибка обновления старого пароля с помощью password_hash
- 28. Является ли PHP password_hash() + password_verify() безопасным сегодня (май 2016 года)?
- 29. PHP password_hash и password_verify Не работает с MySQL
- 30. Рекомендуемая максимальная длина сеанса PHP
Вы прочитали страницу документа по этой функции? –
Да, да. Я смущен, потому что у BCRYPT есть максимальная длина пароля. http://security.stackexchange.com/questions/39849/does-bcrypt-have-a-maximum-password-length – boblapointe
Это как указано в связанном вопросе - до 72 символов, но это не 'password_hash()' предел, но предел алгоритма. Алгоритм по умолчанию может быть изменен в будущем, поэтому может быть использовано количество значимых байтов. И это не очень важно, так как вы можете использовать более длинный пароль, просто не ожидайте, что хэш будет отличаться для двух паролей, которые отличаются только после этого символьного ограничения. –