CodeIgniter3 - хеширование пароля работает не для всех специальных символов - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь получить sh паролей, используя библиотеку CodeIgniter 3 «Community Auth», и я думаю, что обнаружил, что работают только определенные специальные символы. Я просто не могу сказать, почему или что на самом деле с ними происходит.

  • Вот пример действующего пароля: KA83 ** 8! D #
  • Вот пример пароля, который работает НЕ работа: 1aA! @ #% ^ & * () -_ = + {};:, <.>

Edit: Я должен уточнить что пароли сохраняются в БД, но попытка входа в систему не работает.

Если я вытащу указанные ниже методы в одну функцию, которая выполняет hash_passwd и password_verify, тогда сравнение будет работать для обоих паролей .

Следует ли мне использовать preg_quote в строке, чтобы она правильно сохранялась в базе данных? Я пробовал, но, похоже, это ни на что не повлияло.

Вот два метода, которые я использую для изменения пароля, а затем третий для проверки входа в систему.

Model = application \ models \ User_model. php
Method = change_password

$this->db->where('user_id', $user_data->user_id)
                    ->update(
                            $this->db_table('user_table'), [
                        'passwd' => $this->authentication->hash_passwd($password),
                        'passwd_recovery_code' => NULL,
                        'passwd_recovery_date' => NULL
                            ]
            );

Model = application \ third_party \ community_auth \ libraries \ Authentication. php
Метод = hash_passwd

public function hash_passwd($password) {
    return password_hash($password, PASSWORD_BCRYPT, ['cost' => 11]);
}

Модель = application \ third_party \ community_auth \ libraries \ Authentication. php
Method = check_passwd

    public function check_passwd($hash, $password) {
    if (password_verify($password, $hash)) {
        return TRUE;
    }
    return FALSE;
}

1 Ответ

0 голосов
/ 05 августа 2020

Я разобрался. Метод change_password экранирует пароль, а метод входа - нет. Обновлен, чтобы избежать обоих, и теперь он работает.

...