Українська

Інструменти розробника · UUID генератор

Що робить UUID Настроювання добре сформований, і що перевірка не може знати

· Як працює

Опубліковано ToolAcre · Редакція журналу

Увійти криптографія веб-сайт

Кілька UUID представлення показаних сторін: канонічний 8-4-4-4-12, верхня клітка, з брекетами, безшумним і з урною: префікс
Головна ToolAcre векторна ілюстрація

Верхній клітку, брекети, urn: префікси і відсутні фени всі перетворюються в реальний вхід. Цей пост визначає канонічну форму, показує, що повинен прийматися lenient, і відокремлює добре сформованість від існування.

Мистецтво 400 що має бути 404 — як недбалий UUID важко випускати плутанини API кицька

Анонім API кінцева точка отримує ідентифікатор від клієнта: {12345678-90АБ-CDEF-1234-567890ABCDEF}. Перевірка коду перевірки, якщо він відповідає / [0-9a-f]{32, і відхиляється від її недійсним. Клієнт отримує 400 Поганий запит, де 404 Не знайдено було призначено. Визначальник добре сформований — це дійсний UUID у форматі вигнутого типу — але дійсний уважний. Зовні, кінцева точка, яка приймає будь-який 32-character шестигранний рядок (без побачень) прийматиме 123456789012345678901234567890123456, записати його як діє, і пропустити типо. RFC 9562 визначає канонічне текстове представлення, але вводний в реальному світі прибуває в п'ять різних форматах, і валідатор, який приймає тільки канонічну форму, відхиляє 1 до 5 відсотків добре вдається ввод.

Кононічна текстова форма — 32 нижня клітка цифр у 8-4-4-4-12, точно 36 символи, як стандартні характеристики для виходу

Кононічна текстова форма 32 нижня кришка шестигранних цифр в п'яти групах, відокремлених гіфенами: 8-4-4-4-12. Представництва: 550e8400-e29b-41d4-a716-446655440000. Нормативно-вимірювальні мандати для виходу; на ввод, рекомендується в'язкість-інтенсивний відповідність. Ця форма є однозначно, внесена в байти таким же чином на кожній платформі, і що кожен UUID виходи бібліотеки за замовчуванням. Якщо ви генеруєте новий UUID з CSPRNG, канонічна форма є те, що ви повинні виробляти і що ToolAcre виробництво. Введення в реальному часі відхилено у передбачуваних способами. Визначні ідентифікатори верхнього регістру (550E8400-E29B-41D4-A716-446655440000) є загальними з систем, які за замовчуванням до верхньої частини; вони представляють однакові байти і повинні бути прийняті після нормалізації на нижній регістр.

Варіанти, які ви будете відповідати в дикому — гомілки верхнього краю, {braces}, урна:уїд: префікс і 32-характерні форми, і які стандарт говорить прийняти

Артикул: [550e8400-e29b-41d4-a716-446655440000) - стандартний вихід з системи слухання Python та Microsoft; демонтаж брекетів дає дійсну канонічну форму. Мистецтво URN префікс (urn:uid:550e8400-e29b-41d4-a716-446655440000) визначається RFC 8141 для однорідних назв ресурсів; видалення схеми та видалення ідентифікаційного префікса листя канонічної форми. Невідкладна форма (гіфенна форма)550e8400e29b41d4a716446655440000) є 32 геї цифри без структури; це дійсні байти, але втратить 8-4-4-4-12 групування, що робить версії та варіанти, що читаються. Ці варіанти всіх карт до того ж 128-розрядна вартість. RFC 9562 укр 3 стани, які на вході, варіанти верхнього вікна SHOULD бути прийнятий. Не забороняє іншим варіантам; говорить про те, що на виході, канонічна форма нижньої коробки MUST бути використаними.

Версія і варіант санності — чи відхиляти UUID чиї третя група стартує з 0 або четверта група якого починається з f

Обов'язковий приймач повинен: прийняти канонічний 8-4-4-4-12 у нижньому або верхньому регістру; приймати виброшені і сечові: варіанти, демонтаж їх і перевірка форми ядра; приймати непристойний 32-цифрові нитки шестигранних і форматувати їх як канонічний для порівняння; відхилити рядки з неправильною кількістю цифр шестигранних або не-hexadecimal символи. Найпоширеніші помилки відхиляють верхній або вигнутий вхід, оскільки реактор був рукописний, щоб відповідати канонічної форми тільки. Перевірка санітарії на версії та варіанті може ловити накладки. Якщо третя група починається з 0 або 9, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , UUID недійсний або зарезервований; якщо четверта група починається з е або f, варіант не RFC 9562.

У роботі приклад — шість кандидатів, які виконуються через сувору перевірку і lenient, з причинами, які проходять або не здаються

Виконується, що використовується для забезпечення безпеки, а також для забезпечення їх відхилення. Мистецтво ToolAcre юридична перевірка виконує сувору перевірку: підтверджує канонічну 36-характерна форма з ташами в правих місцях, виправдає цифри гексу в кожному положенні, і перевіряє, що версія і варіант біт в асортименті. Не перевірте, що UUID ви можете дізнатися в Вашій базі даних або що він був створений з криптографічно захищеного джерела; вони є окремими перевірками, що виконуються логікою додатків. Не так само, як і реальний. А.А UUID рядок, що правильно за формою, може не визначати будь-який ряд у вашій базі даних.

Важко вражати себе, тому що в глухому стані UUID не існує в ваших даних, і чому перевірка ніколи не повинна бути вашим шаром авторизації

А.А UUID це чудово сформовано, можливо, було вгадовано або копіювально невірно. Важення форматів – це перша хвіртка, перевірка існування та перевірка авторизації – другий та третій. Запуск на базу даних для кожного формату-внутрішня вхід відпрацьований; відхилення відформат-внуходу до запитів бази економить час. Мистецтво ToolAcre виходи генератора стандарт 36-character UUIDs; якщо ви будуєте свій власний реактор, приймаєте виброшені і урні: варіанти, щоб відповідати входам в реальному світі, а відхилити рядки, які не мають базових правил форми перед запитом вашої бази даних. Впровадження строгого валідатора вимагає регулярних виразів і обробки крайових регістрів. Форма канонічної форми прямопередбачувана: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i (результат). Виброплоча форма додає кучеряві брекети: /^\{[[[[[[]0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}$/i. Урна: варіант додає схему: /^urn:uid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.

Що це не криється — нормалізує ідентифікатори для зберігання та вибору типу стовпця, які є окремими рішеннями

Один з основних варіантів, який ручить всі варіанти, менш читаються, але можливо. Більшість валідаторів нормалізують спочатку: смуги і урна: префікс, конвертер в нижній ядер, потім відповідають канонічному візерунка. Варіанти і варіанти біт можна перевірити після складання шаблону за допомогою екзаменаційних позицій 14 і позиція 19 як описано в 403 стаття. Обробка недійсним введенням граціозно є частиною перевірки. Коли клієнт подає зловживане UUID, не піддавати шаблону regex або правила внутрішнього валідації в повідомленнях про помилку. Повернути чітку помилку: "Незаконний UUID формат. Витратити 8-4-4-4-12 формат, такі як 550e8400-e29b-41d4-a716-446655440000"Не намагайтеся виправити вхід; запитайте клієнта для відкликання.

Поруч: валідувати форму рано, подивитися існування окремо — ToolAcre перевірте форму підтвердження у браузері перед тим, як ви доторкнулися до бази даних

Деякі системи недійсні введення для перевірки безпеки (виявлення спробованих ін'єкцій або форматних нападів на плутанини). Мистецтво ToolAcre активатор відхиляє неканонічні форми з чітким повідомленням про помилку і не намагається автоматично скоректувати. Чому канонічна форма стосується взаємопроникності: якщо одна система зберігає UUIDs як хіфрідний шестигран і інші магазини, як канонічний 8-4-4-4-12, порівнявши їх на рівність, вимагає нормалізації. Верхній клітки проти нижньої колонтитули вимагає порівняння випадкових речовин. Зброя проти сідла вимагає демонтажу. Ці варіації роблять об'ємні операції (імпорти, міграції, порівняння) Стандартні інструменти, які виводяться канонічні форми, зменшують тертя. Мистецтво ToolAcre генератор завжди виходи 36-характерна форма нижня кришка; при імпорті UUIDs з інших систем нормалізуйте їх до цієї форми у вашому пристрої ETL процес забезпечення консистенції.