Блог Горошко Андрея 1C-Битрикс Работа с паролями в D7: Хеширование и проверка с Bitrix\Main\Security\Password

Работа с паролями в D7: Хеширование и проверка с Bitrix\Main\Security\Password

Средний рейтинг
Еще нет оценок

При работе с CUser::Add Битрикс сам хеширует пароль.

Но если вы используете D7 ORM (\Bitrix\Main\UserTable::add) или пишите свою систему авторизации, вам нужно работать с хешами вручную.

Класс Bitrix\Main\Security\Password предоставляет стандартизированные методы для этого.

1. Хеширование пароля (для сохранения)

Если вы создаете пользователя через UserTable, пароль нужно предварительно захешировать.

use Bitrix\Main\Security\Password;
use Bitrix\Main\UserTable;

$plainPassword = "MySuperPassword123";

// Создаем хеш
$passwordHash = Password::hash($plainPassword);

// Сохраняем в базу
$result = UserTable::add([
    'LOGIN' => 'newuser',
    'PASSWORD' => $passwordHash, // Сохраняем ХЕШ, а не пароль
    'EMAIL' => 'test@test.com',
    'ACTIVE' => 'Y'
]);

2. Проверка пароля (для авторизации)

Если вам нужно проверить, подходит ли введенный пароль к хешу из базы данных (например, при реализации своего API входа).

use Bitrix\Main\Security\Password;
use Bitrix\Main\UserTable;

$login = "newuser";
$inputPassword = "MySuperPassword123";

// 1. Получаем хеш пользователя из БД
$user = UserTable::getList([
    'select' => ['ID', 'PASSWORD'],
    'filter' => ['=LOGIN' => $login]
])->fetch();

if ($user) {
    // 2. Проверяем совпадение
    if (Password::equals($user['PASSWORD'], $inputPassword)) {
        echo "Пароль верный!";
        // Можно авторизовать: $USER->Authorize($user['ID']);
    } else {
        echo "Неверный пароль.";
    }
}

Важные нюансы:

  • Битрикс использует разные алгоритмы хеширования (от старого MD5 до современного Blowfish) в зависимости от настроек и версии ядра. Метод Password::hash автоматически выберет самый безопасный из доступных.
  • Метод Password::equals (или verify) умеет работать со всеми историческими форматами хешей Битрикс.

Вывод:
Никогда не используйте md5() вручную.

Используйте класс Bitrix\Main\Security\Password — это гарантирует, что ваши хеши будут криптостойкими и совместимыми со стандартной системой авторизации Битрикс.

Bitrix\Main\Security\Password, hash, verify, проверка пароля битрикс, хеширование паролей, безопасность битрикс, создание пользователя D7.

Мой рейтинг:

Добавить комментарий

Related Post

Современная работа с разделами инфоблоков: SectionTable::getList в Bitrix D7 ORMСовременная работа с разделами инфоблоков: SectionTable::getList в Bitrix D7 ORM

Средний рейтинг Еще нет оценок Продолжая осваивать D7 ORM, перейдем от элементов к разделам. Для работы с разделами инфоблоков в современном API предназначен класс \Bitrix\Iblock\SectionTable. Он предоставляет тот же мощный и

Постраничная навигация в D7: Класс Bitrix\Main\UI\PageNavigationПостраничная навигация в D7: Класс Bitrix\Main\UI\PageNavigation

Средний рейтинг Еще нет оценок В старом ядре навигация была жестко привязана к объекту результата выборки (CDBResult). В D7 навигация — это отдельный, независимый объект, который «знает» о текущей странице

Чем отличается ядро D7 bitrix и bitrix старое ядроЧем отличается ядро D7 bitrix и bitrix старое ядро

Средний рейтинг Еще нет оценок D7 Bitrix — это новое ядро Битрикс, которое было создано для замены старого ядра. D7 Bitrix является новым ядром разработки, которое было введено в версии