Возвращает сообщение об утечке пароля

У меня есть 2 файла - регистрация и авторизация пользователя. Если в одну из форм пользователь введет свои данные - он будет авторизован \ зарегистрирован и авторизован. Но при авторизации мой браузер (Chrome) пишет, что произошла утечка паролей. Почему он так пишет, что я сделал не так?

registration.php

<?php 

session_start();

header('Content-Type: charset=utf-8');

include("config.php");
include("get_from_db_functions.php");
include("user_params_operations.php");

function validateInputs() {
    // Проверяет все ли поля ($_POST) заполнены
    $valid = true;
    $errorMessage = array();
    foreach ($_POST as $key => $value) {
        if (empty($_POST[$key])) {
            $valid = false;
        }
    }
    if($valid == false) {
        $errorMessage[] = "Нужно заполнить все поля";
    }
    return;
}

$registration_result = validateInputs();
$_SESSION['registration_errors'] = $registration_result;

$con = setConnection();

$name = stripslashes($_POST['name']);
$name = mysqli_real_escape_string($con, $name);
$surname = stripslashes($_POST['surname']);
$surname = mysqli_real_escape_string($con, $surname);
$login = stripslashes($_POST['login']);
$login = mysqli_real_escape_string($con, $login);
$pwd = stripslashes($_POST['pwd']);
$pwd = mysqli_real_escape_string($con, $pwd);
$pwd = password_hash($pwd, PASSWORD_DEFAULT);
$email = stripslashes($_POST['email']);
$email = mysqli_real_escape_string($con, $email);
$bday = stripslashes($_POST['date']);
$bday = mysqli_real_escape_string($con, $bday);

// Проверить есть ли пользователи с такими логинами или паролем
$user_check_query = "SELECT id FROM users WHERE login='$login' OR email='$email' LIMIT 1";
$result = mysqli_query($con, $user_check_query);
$user = mysqli_fetch_assoc($result);

if ($user) {
    // Если такой пользователь уже есть, то ошибка
    if ($_SESSION['registration_errors'] == null) {
        $_SESSION['registration_errors'] = array();
    }
    if ($user['login'] === $login) {
        array_push($_SESSION['registration_errors'], "Такой логин уже существует");
    } else if ($user['email'] === $email) {
        array_push($_SESSION['registration_errors'], "Такой email уже зарегистрирован");
    }
} else {
    // Если все ок то зарегистрировать пользователя
    
    // Основная таблица пользователей:
    $query    = "INSERT INTO `users` (name, surname, login, pwd, birthdate, email, encr_iv, encr_key) VALUES ( '$name', '$surname', '$login', '$pwd', '$bday', '$email', '', '')";
    $result   = mysqli_query($con, $query);
    
    // Таблица пользователей с их параметрами:
    $getid = "SELECT id FROM users WHERE login='$login' OR email='$email' LIMIT 1";
    $result = mysqli_query($con, $getid);
    while ($row = mysqli_fetch_assoc($result)) {
        $id = $row['id'];
        $age = calcAgeByBirthDate($bday);
        $query    = "INSERT INTO `user_params` (user_id, age, happiness_level, good_habbits, bad_habbits, max_lifespan, expected_lifespan)
                    VALUES ('$id', '$age', 0, '', '', 0, 0)";
        $res   = mysqli_query($con, $query);
    }


    // Пользователь был зарегестрирован, теперь автоматически авторизовываем его и редирект на его профиль
    $con->close();

    $_SESSION['en_user'] = encrypt($login);
    $_SESSION['en_pass'] = encrypt($pwd);
    header("Location: auth.php");

}


?>

auth.php

<?php

session_start();
include("get_from_db_functions.php");

if(isset($_POST['login_mail']) && isset($_POST['pwd']))
{
    $login_mail = $_POST['login_mail'];
    $pwd = stripslashes($_POST['pwd']);
    // $pwd = mysqli_real_escape_string($con, $pwd);
} elseif (isset($_SESSION['en_user']) && isset($_SESSION['en_pass']))
{
    $login_mail = decrypt($_SESSION['en_user']);
    $pwd      = decrypt($_SESSION['en_pass']);

} else {
    unset($_SESSION['en_user']); 
    unset($_SESSION['en_pass']); 
    exit;
}

function getRandom16IV()  {
    $alph = array_merge(range('A', 'Z'), range('a', 'z'));
    $result = "";
    $i = 0;
    while ($i != 16) {
        $result = $result . $alph[array_rand($alph, 1)];
        $i++;
    }
    return $result;
}

function getRandom255Key() {
    $numbers = range(1, 9);
    $result = "";
    $i = 0;
    while ($i != 255) {
        $result = $result . $numbers[array_rand($numbers, 1)];
        $i++;
    }
    return $result;
}



include("config.php");
$con = mysqli_connect($db_ip, $db_login, $db_pwd , $db_name);
if (mysqli_connect_errno()){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$query    = "SELECT login, pwd, email FROM `users`";
$result   = mysqli_query($con, $query);


$user_exist = false;
while($row = $result->fetch_assoc()) {
    if ($row["login"] == $login_mail or $row["email"] == $login_mail) {
        if ( password_verify($pwd, $row["pwd"]) ) { // $row["pwd"] == $pwd
            $user_exist = true;
        }
    }
}



if ($user_exist == true) {
    include("config.php");
    // include("get_from_db_functions.php");
    $key = getRandom255Key();
    $iv = getRandom16IV();
    
    $encrypt_result = openssl_encrypt($login_mail, $encr_method, $key, $options=0, $iv);

    $bday = getBday($login_mail);
    $age = calcAge($bday);

    setcookie("login_encr", $encrypt_result, time() + (86400 * 30 * 31 * 12), "/"); // год
    setcookie("logged_in", "true", time() + (86400 * 30 * 31 * 12), "/");
    setcookie("age", $age, time() + (86400 * 30 * 31 * 12), "/");
    
    $query    = "SELECT id FROM `users`WHERE login='$login_mail' OR email='$login_mail' LIMIT 1";
    $result   = mysqli_query($con, $query);
    while ($row = mysqli_fetch_assoc($result)) {
        setcookie("id", $row['id'], time() + (86400 * 30 * 31 * 12), "/");
    }
    
    $query    = "UPDATE `users` SET encr_iv='$iv', encr_key='$key' WHERE login='$login_mail' OR email='$login_mail'";
    $result   = mysqli_query($con, $query);
    
    $_SESSION['auth-errors'] = array(); // он пуст значит все ок
    
} else {
    // есть ошибки при авторизации, заносим в массив
    $_SESSION['auth-errors'] = array(
        'e1' => "Введен неверный логин или пароль"
    );

}

$con->close();

header("Location: ../profile.php");

?>

Ответы (1 шт):

Автор решения: Cookie

Браузер сверяет хэш Вами созданного нового пароля с базой данных уже скомпрометированных паролей - тех, которые уже были украдены. То есть, - если мой пароль 123qwerty "угнали" вчера, а сегодня Вы создадите такой же пароль - Хром Вам напишет, что произошла утечка.

→ Ссылка