Блог Горошко Андрея 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.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

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

Related Post

Комплексный аудит сайта перед редизайном: анализ поведения пользователей и узких местКомплексный аудит сайта перед редизайном: анализ поведения пользователей и узких мест

Миграция сайта на платформу 1С-Битрикс или комплексный редизайн интерфейса — это стратегический шаг для устранения технических ограничений, защиты от санкционных рисков и масштабирования онлайн-продаж. Услуга «Комплексный аудит сайта перед редизайном:

Подключение эквайринга CloudPayments со всплывающим виджетом оплатыПодключение эквайринга CloudPayments со всплывающим виджетом оплаты

Бесшовная и отказоустойчивая интеграция сайта на 1С-Битрикс с внешними учетными системами, банками, службами доставки и маркетплейсами — основа масштабирования современного бизнеса. Услуга «Подключение эквайринга CloudPayments со всплывающим виджетом оплаты» обеспечивает

Как использовать Bitrix::MainGlobalVars() в 1С-Битрикс: пример кодаКак использовать Bitrix::MainGlobalVars() в 1С-Битрикс: пример кода

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать Bitrix::MainGlobalVars() в 1С-Битрикс: пример кода», разберем