2015-06-20 2 views
1

Я использую функцию криптографии в PHP для хэш-паролей, а также соли. Но я генерирую соль, вызывая функцию md5 над функцией даты. И каждый раз, когда пользователь регистрируется в соли, регенерируется.Является ли это плохой практикой для хранения паролей в PHP?

Есть ли это в любом случае? Я по-прежнему относительно новичок в PHP (и webdev), и я пытаюсь получить свою защиту прямо перед тем, как развернуть этот код.

$salt = md5(date('m/d/Y h:i:s a')); 
+3

Почему бы просто не использовать 'password_hash()', доступный с PHP5.5? Существует также [прокладка для более ранних версий] (https://github.com/ircmaxell/password_compat) PHP (5.3.7+). [Справочник по PHP] (https://php.net/manual/en/function.password-hash.php) –

+0

Рассмотрите эту статью: https://crackstation.net/hashing-security.htm. Он включает хорошее обсуждение и пример реализации PHP. – Firefly

+0

Посмотрите на [этот ответ] (http://stackoverflow.com/a/10945097/1338292) и прочитайте раздел о хешировании паролей. –

ответ

1

Это считается плохой практикой для многих. Вот некоторые из причин:

  1. Вы используете md5, слабый, старый и быстрый, чтобы вычислить хэш.
  2. Соль генерируется предсказуемым образом. Соль должна отличаться для каждого пользователя (даже если она зарегистрирована в той же самой секунде) и должна быть более случайной, чем дата.
  3. Вы изобретаете колесо. Вы используете функцию crypt для хэширования паролей, поэтому нет причин не использовать это для получения соли. password_hash() - это встроенная функция PHP 5.5 и compatibility library для версий, которые немного старше этого.

How to use password_hash()

TL; DR: использовать password_hash() для создания соли и хэш пароля, не нужно изобретать велосипед в менее безопасным способом.

Кредит, предоставленный Hobo Sapiens для упоминания password_hash().

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

  • Нет связанных вопросов^_^