Идентификатор UUID
UUID (Universally Unique Identifier) — уникальный идентификатор, который состоит из 32 шестнадцатеричных символов и записывается в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Общая длина строки — 36 символов.
Идентификатор UUID используются в ситуациях, где числовой автоинкрементный ID не подходит.
-
Создание идентификаторов без общей базы. Несколько независимых сервисов могут генерировать уникальные значения без обращения к центральному хранилищу.
-
Публичные идентификаторы. UUID можно использовать в API и URL. Такой идентификатор не показывает количество записей и внутреннюю структуру базы данных.
-
Безопасность. UUID сложнее подобрать, чем последовательный числовой ID. Это полезно для публичных ссылок, например на файлы или формы.
Создать UUID
Чтобы создать UUID, используйте класс Bitrix\Main\UuidGenerator. Метод generateV4() возвращает UUID версии 4, то есть сформированный на основе случайных данных.
Алгоритм работы метода:
-
Берет 16 случайных байт через
\Bitrix\Main\Security\Random::getBytes(16). -
Изменяет часть байтов, чтобы UUID соответствовал стандарту версии 4.
-
Преобразует байты в шестнадцатеричную строку и добавляет дефисы.
use Bitrix\Main\UuidGenerator;
$uuid = UuidGenerator::generateV4();
echo $uuid;
// Результат: f4dd98e2-5bc4-4fce-b04a-95d37e6554dc
Пример использования
Идентификатор UUID можно использовать, чтобы создавать безопасные публичные ссылки на ресурсы: файлы, черновики, формы. UUID снижает вероятность подбора ссылки.
use Bitrix\Main\UuidGenerator;
// Генерируем уникальный публичный код для документа
$publicCode = UuidGenerator::generateV4(); // f4dd98e2-5bc4-4fce-b04a-95d37e6554dc
// Формируем безопасную публичную ссылку
$publicLink = 'https://mysite.ru/share/' . $publicCode;
echo $publicLink; // Результат: https://mysite.ru/share/f4dd98e2-5bc4-4fce-b04a-95d37e6554dc
-
Сгенерируйте UUID при создании ресурса.
-
Сохраните значение в базе данных, например, в поле
PUBLIC_CODE. -
Используйте этот код в публичной ссылке.
-
При обращении по ссылке найдите запись по полю
PUBLIC_CODE.
Внутренний числовой ID изолирован и структура базы данных остается скрытой. Внешние пользователи и системы работают только с UUID.