Блог Горошко Андрея 1C-Битрикс Генерация случайных строк и чисел: Bitrix\Main\Security\Random vs RandomSequence

Генерация случайных строк и чисел: Bitrix\Main\Security\Random vs RandomSequence

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

В Битрикс есть два класса для генерации случайных данных, и их часто путают. Они предназначены для совершенно разных целей.

1. Bitrix\Main\Security\Random (Для безопасности)

Используйте этот класс, когда нужна непредсказуемость:

  • Генерация паролей.
  • Создание токенов (CSRF, API-ключи).
  • Генерация «соли» для хешей.

Он использует криптографически стойкие источники энтропии.

use Bitrix\Main\Security\Random;

// Случайная строка длиной 10 символов (цифры и латиница)
$password = Random::getString(10); 
// Пример: aB3x9Zq1w2

// Строка с использованием спецсимволов (true)
$complexPassword = Random::getString(12, true); 

// Случайное число (аналог random_int)
$number = Random::getInt(1, 100);

2. Bitrix\Main\Type\RandomSequence (Для воспроизводимости)

Этот класс реализует генератор псевдослучайных чисел (PRNG), который инициализируется зерном (seed).
Используйте его, когда нужна воспроизводимость:

  • A/B тестирование (чтобы один и тот же пользователь всегда попадал в одну и ту же группу).
  • Генерация детерминированных цветов для аватарок по ID пользователя.

Если вы инициализируете его одним и тем же значением (например, ID пользователя), он всегда будет выдавать одну и ту же последовательность «случайных» чисел.

use Bitrix\Main\Type\RandomSequence;

$userId = 12345;
$rand = new RandomSequence($userId); // Инициализируем ID пользователя

// Получаем "случайное" число от 0 до 100
// Для юзера 12345 оно ВСЕГДА будет одинаковым (например, 42)
$group = $rand->rand(0, 100);

if ($group < 50) {
    echo "Вариант А";
} else {
    echo "Вариант Б";
}

Вывод:
Никогда не используйте RandomSequence для генерации паролей или токенов безопасности — они предсказуемы! Для защиты используйте Security\Random.

Для интерфейсных фишек и A/B тестов — RandomSequence.

Bitrix\Main\Security\Random, Bitrix\Main\Type\RandomSequence, генерация пароля, случайная строка, getNext, getString, random битрикс

Мой рейтинг:

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

Related Post

Управление заголовками и мета-тегами в Битрикс: SetPageProperty, ShowTitle, ShowMetaУправление заголовками и мета-тегами в Битрикс: SetPageProperty, ShowTitle, ShowMeta

Средний рейтинг Еще нет оценок Правильное управление заголовками (<title>) и мета-тегами (description, keywords, robots) — это фундамент SEO-продвижения. В Битрикс за это отвечает глобальный объект $APPLICATION. С его помощью можно динамически устанавливать и

CRUD-операции в Bitrix D7 ORM: add, update, delete на практикеCRUD-операции в Bitrix D7 ORM: add, update, delete на практике

Средний рейтинг Еще нет оценок Мы уже рассмотрели, как выбирать данные с помощью getList в D7 ORM. Теперь давайте разберем полный цикл CRUD-операций (Create, Read, Update, Delete), который позволяет полностью управлять данными

1с Битрикс фильтрация по свойству элементов1с Битрикс фильтрация по свойству элементов

Средний рейтинг Еще нет оценок В Битриксе вы можете использовать различные условия выборки с помощью фильтрации в параметре 'filter' при вызове метода getList() или других методов выборки данных. Вот несколько