максимальная длина поля пароля пользователя с «алгоритмом: авто»? - PullRequest
3 голосов
/ 31 мая 2019

Symfony 4.3 устарел алгоритм bcrypt, см. UPGRADE-4.3.md :

Настройка кодировщиков, использующих argon2i или bcrypt, поскольку алгоритм устарел, вместо этого используйте auto.

Поэтому я изменил security.yaml на:

encoders:
    App\Entity\User:
        algorithm: auto

Проблема в том, что после переключения на auto хэшированная строка длиннее:

'INSERT INTO users (..., password, ...) VALUES (...)' с параметрами [..., "$ Argon2id $ v = 19 $ м = 65536, т = 6, р = 1 $ d2RhZjVuaWJsSnE0TW5haA $ ycOn7EHjPOoBTSa6SHDOBWL2AvwfPNjAstlSTEMmPpU", ...]:

SQLSTATE [22001]: Строковые данные, усеченные справа: 1406 Слишком длинные данные для столбец «пароль» в строке 1

Эта строка имеет длину 97 символов, в то время как в моем столбце паролей было 64. Я не нашел никакой документации о максимально возможной длине с атрибутом "auto", это 97? Или это может быть больше?

1 Ответ

1 голос
/ 31 мая 2019

Как сказал @Cerad в комментариях, режим auto, скорее всего, всегда будет генерировать пароли, которые поддерживаются встроенной функцией PHP password_hash() (в зависимости от платформы).
Поэтому вы можете смело полагаться наподсказка документации password_hash () :

PASSWORD_DEFAULT - [...] Обратите внимание, что эта константа может изменяться со временем по мере добавления новых и более сильных алгоритмовPHP.По этой причине длина результата от использования этого идентификатора может меняться со временем.Поэтому рекомендуется сохранить результат в столбце базы данных, который может быть расширен за пределы 60 символов ( 255 символов будет хорошим выбором ).

...