2016-10-12 5 views
0

Если я правильно понял, любое обновление PHP или переход на другой сервер сделают ранее хэшированные пароли (хранящиеся в базе данных) бесполезными? Потому что соль будет отличаться в новой системе.password_hash: любые преимущества автоматически генерируемой соли в ручном режиме?

Это заставляет меня любопытно использовать варианты использования для автоматически генерируемой соли.

+0

Связанный вопрос: http://stackoverflow.com/questions/17431031/passwords-hashed-differently-on-different-servers – Dan

+3

Конечно, есть преимущество - они довольно случайны, и вам никогда не придется беспокоиться о поваренная соль. И я никогда не слышал об обновлении или переходе на уничтожение 'password_verify()' способности разрешать хэш. После создания хэша всегда можно разрешить AFAIK. –

+2

* Настоятельно рекомендуется, чтобы вы не генерировали свою соль для этой функции. Он автоматически создаст безопасную соль для вас, если вы ее не укажете. * ([Function-password-hash.php] (http://php.net/manual/en/function.password-hash.php)). –

ответ

6

password_hash() сейчас (начиная с PHP 7.1. *) Использует только bcrypt для хеширования паролей. Соль сохраняется вместе с хешем, поэтому обновление или переход на другой сервер не будут делать хеши бесполезными.

Как @Jay Blanchard говорит, что in his comment, авто соли являются преимуществом, потому что вам просто не нужно заботиться. Все удобно и автоматически обрабатывается.

Вы даже не должны создавать соль самостоятельно, так как это тоже очень easy to make a mistake при генерации соли самостоятельно (неслучайное соль, некорректный случайный источник для соли и т.д.).

Кроме того, параметр salt устарел с PHP 7.0.0 в password_hashbcrypt алгоритмом, поэтому PHP всегда будет использовать автоматически генерированную соль.

4

Соль генерируется для каждого пароля и сохраняется как часть строки, возвращаемой функцией password_hash. Поэтому каждый раз, когда вы вводите пароль, он будет отличаться. Причина, по которой мы используем соль в паролях, - это получить новый хэш каждый раз, когда он создается, поэтому, если два пользователя используют пароль «hunter2», они будут храниться как абсолютно разные значения в базе данных, что делает таблицы радуги бесполезными.

Таким образом, переход на новый сервер не приведет к бесполезным ранее испорченным паролям.

+1

[Даже когда 2 Бэтмена используют одну и ту же кодовую фразу] (http://jayblanchard.net/proper_password_hashing_with_PHP.html);) –

-2

если вы хотите использовать ручную соль, вы можете использовать его. даже если вы перейдете на новый сервер, предыдущий пароль не будет бесполезен.

Trick, что вы можете хранить ручную соленую строку, в которой вы обычно хранят константы вашего сайта, например, Дб имя пользователя, пароль DB ....

так что даже если вы переходите на новый сервер вы по-прежнему использовать вашей ручной солевой струны и ранее соленых данных.

+2

Статическая соль для всех пользователей, также известная как «перец», не заменяет -содержащая соль. Его можно использовать как дополнительную меру безопасности, но никогда не заменять. – ChristianF

Смежные вопросы