Я пытаюсь создать систему входа в систему с использованием PHP, и я не совсем уверен, что мой скрипт действительно хорош, посмотрите ниже.
Итак, я создал две функции ... Одна из них для создания хэша, а другая для его проверки.
Проверьте функции:
function createSaltedPass($pass = false, $username = false) {
if($pass && $username)
{
$salt = hash('sha256', uniqid( mt_rand(), true ) . md5(date('d m Y H i s') . " # ") . $username);
$pass = hash('sha256', $salt . $pass . $salt);
$pass = $salt . $pass;
return $pass;
}
}
Приведенный выше фрагмент кода создает огромный хэш (точнее 128 символов), и я не знаю, действительно ли он безопасен.
Первая половина - соль, и я могу проверить ее, когда она понадобится.
Вторая половина - реальный соленый пароль.
См. Пример пароля:
939cf87873a402d48bcf66a57b64ca38d6f1db9155381ffe1aae9a469e93d1e7ec338071f2dd21a96ef5fc799a3f3921b0df3188458b17422db79271056a1fda
Посмотрите на функцию для проверки пароля после использования первой функции:
function checkSaltedPass($dbPass = false, $pass = false) {
if($pass && $dbPass)
{
$salt = substr($dbPass, 0, 64);
$pass = hash('sha256', $salt . $pass . $salt);
$pass = $salt . $pass;
return $pass;
}
}
Что вы думаете об этом? Я не специалист по безопасности, и я был бы рад, если бы кто-нибудь дал мне подсказку.
Еще одна вещь: как лучше обработать сеанс, чтобы пользователи оставались в системе?
(извините за плохой английский, это не мой родной язык).