Максимальная длина поля пароля пользователя с "алгоритмом: авто"?
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 $ m = 65536, t = 6, p = 1 $ d2RhZjVuaWJsSnE0TW5haA $ ycOn7EHjPOoBTSa6SHDOBWL2AvwfPNjAstlSTEMmPpU ",...]:
SQLSTATE [22001]: Строковые данные, усеченные справа: 1406 Слишком длинные данные для столбца "пароль" в строке 1
Длина этой строки составляет 97 символов, в то время как длина моего столбца пароля составляла 64. Не найдено документации о максимально возможной длине с атрибутом "auto", это 97? Или это может быть больше?
1 ответ
Как сказал @Cerad в комментариях, auto
режим, скорее всего, всегда будет выдавать пароли, которые поддерживаются password_hash()
встроенная функция PHP (в зависимости от платформы).
Поэтому вы можете смело полагаться на подсказку, приведенную в документации к password_hash():
PASSWORD_DEFAULT - [...] Обратите внимание, что эта константа предназначена для изменения во времени по мере добавления новых и более сильных алгоритмов в PHP. По этой причине длина результата от использования этого идентификатора может меняться со временем. Поэтому рекомендуется хранить результат в столбце базы данных, который может расширяться за пределы 60 символов (255 символов будет хорошим выбором).