Это моя первая пробная версия для внедрения сайта-участника с соленными паролями, которые все хранятся в БД (MySQL). Все работает, за исключением ошибки на странице «Логин для участников».Как убрать соленый пароль из базы данных и пользователя auth?
Ошибка: Логин пользователя страница принимает любую запись на членство на сайте и по какой-то причине проходит мой чек на $result === false
Это код для проверки, если существует элемент, пожалуйста, дайте мне знаете, в чем проблема:
$servername = 'localhost';
$username = 'root';
$pwd = '';
$dbname = 'lp001';
$connect = new mysqli($servername,$username,$pwd,$dbname);
if ($connect->connect_error){
die('connection failed, reason: '.$connect->connect_error);
}
$name = mysqli_real_escape_string($connect, $_POST['name']);
$password = mysqli_real_escape_string($connect, $_POST['password']);
$saltQuery = "SELECT salt FROM users WHERE name = '$name';";
$result = mysqli_query($connect, $saltQuery);
if ($result === false){
die(mysqli_error());
}
$row = mysqli_fetch_assoc($result);
$salt = $row['salt'];
$saltedPW = $password.$salt;
$hashedPW = hash('sha256', $saltedPW);
$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";
if (mysqli_query($connect, $sqlQuery)){
echo '<h1>Welcome to the member site '.$name.'</h1>';
}else{
echo 'error adding the query: '.$sql_q.'<br> Reason: '.mysqli_error($connect);
}
Смотрите это почти под ключ для Вас, раздел Логин, с 'password_verify()' здесь: http://stackoverflow.com/a/33665819. Она включает в себя сеанс, сообщения об ошибках и попытаться/поймать – Drew
SHA- * алгоритмы не являются безопасными для хранения паролей, вместо того, чтобы использовать функцию [password_hash()] (http://www.php.net/manual/en/function. password-hash.php), чтобы создать безопасный хэшинг BCrypt. Это сделало бы неуместным хранить соль отдельно, посмотрите на это [ответ] (http://stackoverflow.com/a/27094183/575765). – martinstoeckli
@martinstoeckli - спасибо, если вы можете написать это как код, я напишу его как ответ, который поможет мне и другим в будущем, и снова забудется. – clusterBuddy