2015-01-19 4 views
0

Я понимаю и признаю, что хранение паролей в моей собственной базе данных - это массивная дыра в безопасности по сравнению с использованием таких сервисов, как Google или Facebook, но мне было интересно, можно ли использовать следующий код для безопасного хранения имен пользователей и паролей с использованием солевого хеша:Насколько безопасен такой способ хранения паролей?

$username = $_POST['user'] 
$salt = md5(openssl_random_psuedo_bytes(24, true)); 
$pass = sha1($salt.$_POST['pass']) 

Я считаю, что это достаточно безопасно, но я не эксперт.

EDIT:

Я думаю, что это было бы лучше, не так ли?

$salt1 = md5(sha1(openssl_random_psuedo_bytes(32, true)); 
$pass = password_hash($_POST['pass'] . $salt1, PASSWORD_BCRYPT); 

Насколько я могу найти подходящий механизм для хранения паролей?

+2

По крайней мере, это не '$ pass = $ _POST ['pass']' –

ответ

3

Это очень плохо (хотя это могло быть и хуже)

  1. SHA1 не очень безопасно.
  2. Все функции прямого хеша слишком быстро используются для паролей.

Вы должны использовать PBKDF2 или bcrypt или scrypt.

+0

Спасибо. Я буду работать над его улучшением. : D –

+0

Удивительно, почему это было опущено – zerkms

+0

Возможно, это связано с тем, что в настоящее время лучше всего использовать пароль_hash/password_verify, хотя всегда трудно понять разум downvoter –

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

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