В настоящий момент у меня есть база данных с сохраненными паролями md5, несколько лет назад это считалось немного более безопасным, чем сейчас, и оно дошло до того, что пароли должны быть более безопасными.
Я читал много сообщений здесь о crypt
, md5
, hash
, bcrypt
и т.д. и пришел к рассмотрению использования чего-то в соответствии с строками следующего, чтобы "защитить" пароли лучше, чем сейчас.
Я буду использовать комбинацию hash("sha512"
и двух солей, первая соль будет солью на сайте, хранящейся в файле, таком как .htaccess, и вторая соль будет создана для каждого пользователя.
Вот пример вдоль строк того, что я тестирую на данный момент:
.htaccess
SetEnv SITEWIDE_SALT NeZa5Edabex?26Y#j5pr7VASpu$8UheVaREj$yA*59t*A$EdRUqer_prazepreTr
example.php
$currentpassword = //get password
$pepper = getenv('SITEWIDE_SALT');
$salt = microtime().ip2long($_SERVER['REMOTE_ADDR']);
$saltpepper = $salt.$pepper;
$password = hash("sha512", md5($currentpassword).$saltpepper);
Соль, очевидно, должна храниться в отдельной таблице, чтобы можно было проверять будущие вставленные пароли для входа, но никогда не было бы доступно для пользователя. Считаете ли вы, что это достаточный способ сделать это?