Добавление аутентификации 2FA в существующий процесс входа в системуPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Добавление аутентификации 2FA в существующий процесс входа в систему

Сообщение Anonymous »


Я пытаюсь добавить аутентификацию 2FA к существующему потоку аутентификации при входе, который в настоящее время выполняется в одной функции. Если у пользователя включена 2FA в учетной записи, он хотел бы выполнить 2FA-аутентификацию через TOTP (если это не удается, попробуйте отправить OTP по электронной почте), в противном случае, если у пользователя нет 2FA, продолжайте существующий процесс входа в систему.

Я попытался перенаправить пользователя на страницу формы 2FA (также необходимо запретить пользователю прямой доступ к этой странице), но затем не знаю, как вернуть его в поток аутентификации после успешной проверки. Начальная страница входа содержит дополнительные скрытые поля, которые необходимо пройти после успешной аутентификации пользователя.

Это текущая функция, используемая для входа в систему (которая показывает мою попытку интеграции 2FA.
function log_in($username, $password, $remember, $page, $submit, $string = null) { если (иссет ($ отправить)) { $username = $this->db_real_escape_string($username); $password = $this->db_real_escape_string($password); if($submit !== 'cookie') { $logintype = 'пароль'; $query = $this->query("SELECT * FROM ".DBTBLE." WHERE username='$username'"); } еще { $logintype = 'токен'; $query_token_salt = $this->query("SELECT `token_salt` FROM ".DBTBLE." WHERE username='$username'"); $current_token_salt = $query_token_salt['token_salt']; $password = hash('sha512', $password.$current_token_salt); $query = $this->query("SELECT * FROM ".DBTBLE." WHERE username='$username' AND token='$password'"); } if($query['num_rows'] == 1) { if($logintype == 'пароль') { if(!(password_verify($password, $query['password']))) { return «Вы ввели неверное имя пользователя/пароль»; } } // Проверяем, активен ли аккаунт if ($query['active'] == 'N') { вернуть «Аккаунт не активен»; } // Проверяем, включен ли для аккаунта MFA??? //if ($query['mfa'] === 'Y') { // заголовок("Местоположение: index_mfa.php"); // возвращаться; //} } еще { return «Вы ввели неверное имя пользователя/пароль»; } $токен = genKey(32); $token_salt = genKey(32); $token_new = hash('sha512', $token.$token_salt); $this->query("UPDATE ".DBTBLE." SET token = '$token_new', token_salt = '$token_salt' WHERE username = '$username'"); $this->set_session($username, $token); если (иссет ($ помнить)) { $this->set_cookie($username, $token, '+'); } if(!$page) { $page = Script_Path."home.php"; } if ($page == 'false') { вернуть истину; } еще { if(!$string == '') { header("Местоположение: ".url_schema.$_SERVER['HTTP_HOST'].$page."?".$string); }еще{ header("Местоположение: ".url_schema.$_SERVER['HTTP_HOST'].$page); } } } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»