UUID Generatorius

Kas yra UUID?

UUID (Universally Unique Identifier) yra 128 bitų identifikatorius, naudojamas kompiuterinėse sistemose informacijai unikaliai identifikuoti. UUID standartizuotas pagal RFC 4122 ir, dėl savo didžiulės entropijos, garantuoja praktiškai nulinę susidūrimo tikimybę – tai reiškia, kad du nepriklausomai sugeneruoti UUID beveik neabejotinai bus unikalūs.

UUID turi standartinį formatą: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, kur kiekvienas x yra šešioliktainis skaitmuo (0-9, a-f), M nurodo UUID versiją, o N – variantą.

UUID versijos

UUID v1 (Laiko žyma + MAC adresas)

UUID v1 pagrįstas dabartine laiko žyma (timestamp) ir atsitiktine verte (naršyklėje vietoj MAC adreso). Jis naudoja 100 nanosekundžių intervalus nuo 1582 m. spalio 15 d. (Grigaliaus kalendorius).

Naudojimas:

  • Situacijos, kai reikia chronologiškai rūšiuoti UUID
  • Derinimas ir registravimas (UUID yra informacija apie sukūrimo laiką)
  • Paskirstytos sistemos su laiko sinchronizavimu

Pavyzdys: 6ba7b810-9dad-11d1-80b4-00c04fd430c8

Privalumai:

  • UUID galima rūšiuoti chronologiškai pagal sukūrimo laiką
  • Naudinga auditui ir derinimui
  • Yra laiko žymos informacija

Trūkumai:

  • Potenciali saugumo rizika – yra laiko žyma
  • Naršyklėje nėra tikrojo MAC adreso (pakeista atsitiktine verte)
  • Prasta DB lokalė (laiko žyma yra žemesniojo tvarkos bituose)

UUID v3 (MD5 maiša)

UUID v3 generuojamas naudojant MD5 maišą iš vardų srities UUID ir pavadinimo. Deterministinis – ta pati vardų sritis + pavadinimas visada sukurs tą patį UUID.

Naudojimas:

  • URL, DNS pavadinimų ar kitų identifikatorių konvertavimas į UUID
  • Situacijos, kai reikia atkuriamų UUID
  • Atvaizdavimas tarp skirtingų identifikavimo sistemų

Pavyzdys: a3bb189e-8bf9-3888-9912-ace4e6543002

Privalumai:

  • Deterministinis (tas pats įvestis = tas pats išvestis)
  • Idealiai tinka žinomų identifikatorių konvertavimui
  • Jokių susidūrimų skirtingoms įvestims

Trūkumai:

  • MD5 yra pasenęs algoritmas (pirmenybę teikite v5)
  • Reikalinga vardų sritis ir pavadinimas
  • Negalima atkurti originalios įvesties

UUID v4 (Atsitiktinis) – REKOMENDUOJAMA

Dažniausiai naudojama UUID versija. UUID v4 generuojamas grynai atsitiktinai, naudojant kriptografiškai saugų atsitiktinių skaičių generatorių (crypto.getRandomValues()).

Naudojimas:

  • Duomenų bazės pirminiai raktai
  • Sesijos identifikatoriai (session IDs)
  • Unikalūs failų pavadinimai
  • API prieigos raktai (tokenai)
  • Bendrieji tikslai, kai reikia garantuotai unikalaus ID

Pavyzdys: f47ac10b-58cc-4372-a567-0e02b2c3d479

Privalumai:

  • Maksimali entropija ir saugumas
  • Nepriklausomybė nuo laiko ar sistemos parametrų
  • Paprasčiausias įgyvendinimas

Susidūrimo tikimybė: Generuojant 1 milijardą UUID per sekundę 100 metų, susidūrimo tikimybė yra apytiksliai 0,00000006%.

UUID v5 (SHA-1 maiša)

UUID v5 yra toks pats kaip v3, tačiau naudoja SHA-1 vietoj MD5. Šiuolaikiškesnė ir saugesnė alternatyva v3.

Naudojimas:

  • Tas pats kaip v3, bet su geresniu saugumu
  • Naujiems projektams teiktina pirmenybė prieš v3
  • UUID generavimas iš URL, DNS pavadinimų, OID, X.500 DN

Pavyzdys: 886313e1-3b8a-5372-9b90-0c9aee199e5d

Privalumai:

  • Deterministinis
  • SHA-1 yra patikimesnis nei MD5
  • Tinka atvaizdavimui tarp sistemų

Trūkumai:

  • SHA-1 taip pat laikomas pasenusiu (bet vis dar saugesnis nei MD5)
  • Reikalinga vardų sritis ir pavadinimas

UUID v6 (Rūšiuota laiko žyma)

UUID v6 yra patobulinta v1 versija su perskirstytais laiko bitais geresniam DB indeksavimui. Skirta išspręsti lokalizacijos problemas duomenų bazėse.

Naudojimas:

  • Duomenų bazės pirminiai raktai su laiko rūšiavimu
  • Sistemos, reikalaujančios chronologinio rūšiavimo ir DB našumo
  • Šiuolaikiškesnė alternatyva v1

Pavyzdys: 1ec9414c-232a-6b00-b3c8-9e6bdeced846

Privalumai:

  • Geresnė DB lokalė nei v1 (laiko žyma aukštesniojo tvarkos bituose)
  • Chronologinis rūšiavimas
  • Suderinama su UUID standartu

Trūkumai:

  • Mažiau naudojama nei v1/v4
  • Vis dar yra laiko informacija (saugumo rizika)

UUID v7 (Unix laiko žyma)

UUID v7 naudoja Unix laiko žymą (milisekundės nuo 1970 m.) + atsitiktinius bitus. Naujausia UUID versija su geriausia DB lokale.

Naudojimas:

  • Šiuolaikinės duomenų bazės pirminiai raktai
  • Sistemos, reikalaujančios našumo + laiko rūšiavimo
  • v1/v6 pakeitimas naujuose projektuose

Pavyzdys: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f

Privalumai:

  • Geriausia DB lokalė iš visų versijų
  • Unix laiko žyma yra standartinė
  • Sujungia atsitiktinumo ir laiko rūšiavimo privalumus

Trūkumai:

  • Santykinai nauja specifikacija (RFC 4122bis)
  • Mažiau palaikoma senose sistemose

Kurią UUID versiją naudoti?

Sprendimų vadovas

Reikia maksimalaus saugumo ir atsitiktinumo? → Naudokite UUID v4 (dažniausias pasirinkimas)

Reikia laiko rūšiavimo ir DB našumo? → Naudokite UUID v7 (moderni) arba UUID v6 (standartas)

Reikia atkuriamų UUID iš esamų identifikatorių? → Naudokite UUID v5 (SHA-1) arba UUID v3 (MD5, sena versija)

Reikia laiko žymos ir audito įrašo? → Naudokite UUID v1 (sena versija, prastesnis DB našumas)

Duomenų bazės

Naujiems projektams: UUID v7 arba v4

  • v7 idealiai tinka laiko rūšiavimui + našumui
  • v4 maksimaliam atsitiktinumui be laiko informacijos

Senioms sistemoms: UUID v1 arba v6

  • v6 turi geresnę DB lokalę nei v1
  • v1 yra plačiai palaikomas

UUID kaip pirminio rakto privalumai:

  • Globalus unikalumas – Galite sujungti duomenis iš skirtingų duomenų bazių be konfliktų
  • Saugumas – Priešingai nei nuoseklių ID (1, 2, 3…), negalima atspėti kitų verčių
  • Paskirstytos sistemos – UUID gali būti generuojami nepriklausomai keliuose serveriuose be koordinacijos
  • Duomenų bazių sujungimas – Sujungus dvi duomenų bazes, nekyla konfliktų

Trūkumai:

  • Didesnis dydis (16 baitų prieš 4-8 baitus sveikajam skaičiui)
  • Lėtesnis indeksavimas kai kuriose duomenų bazėse (naudokite v6/v7 geresniam našumui)
  • Mažiau skaitomas žmogui

API ir žiniatinklio paslaugos

  • REST API – Unikalūs resursų identifikatoriai
  • GraphQL – Globalūs mazgų identifikatoriai
  • Webhookai – Užklausų ir atsakymų stebėjimas
  • Prieigos raktai – Sesijos ID, atnaujinimo raktai

Failai ir saugykla

  • Failų pavadinimai – Kolizijų prevencija įkeliant
  • S3/Cloud saugykla – Unikalūs objekto keliai
  • Talpyklos raktai – Identifikatoriai talpyklos sistemose

Frontend programos

  • React/Vue komponentai – Unikalūs sąrašų raktai
  • Laikinieji ID – ID prieš išsaugant duomenų bazėje
  • Vietinė saugykla – Išsaugotų duomenų raktai
  • Neprisijungus veikiančios programos – ID generavimas be prisijungimo prie serverio

Išplėstinės generatoriaus funkcijos

UUID generavimas su pasirinktiniu laiku

Laiku pagrįstoms versijoms (v1, v6, v7) galite pasirinkti bet kurią laiko žymą naudodami datos ir laiko parinkiklį. Tai naudinga:

Testavimui:

  • Praeityje sukurtų UUID imitavimas
  • Laiko rūšiavimo testavimas duomenų bazėse
  • UUID atkūrimas derinimui

Duomenų migracijai:

  • UUID generavimas su istoriniais laiko žymais
  • Duomenų papildymas teisingomis laiko žymos vertėmis
  • Duomenų importavimas iš skirtingų laikotarpių

Auditui ir atitikčiai:

  • UUID rekonstrukcija pagal įrašo sukūrimo laiką
  • Retroaktyvus identifikatorių generavimas

Naudojimo pavyzdys:

  1. Pasirinkite v1, v6 arba v7 versiją
  2. Nustatykite datą ir laiką naudodami datos ir laiko parinkiklį
  3. Sugeneruokite UUID su savo pasirinkta laiko žyma

Maišavimu pagrįsti UUID (v3, v5)

Deterministiniams UUID galite naudoti v3 (MD5) arba v5 (SHA-1) versijas:

Kaip naudoti:

  1. Pasirinkite vardų sritį pagal savo identifikatoriaus tipą
  2. Įveskite pavadinimą/reikšmę
  3. Sugeneruokite UUID

Pavyzdžiai:

Vardų sritisPavadinimas (įvestis)Naudojimas
DNSexample.comDomeno vardo konvertavimas į UUID
DNSgoogle.comKiekviena svetainė turi unikalų UUID
URLhttps://example.com/pageURL konvertavimas į UUID
URLhttps://api.example.com/users/123API galinis taškas kaip UUID
OID1.3.6.1.4.1.343Objekto identifikatorius į UUID
X.500CN=John Doe,O=CompanyDistinguished Name į UUID

Svarbios savybės:

  • Deterministinis: Ta pati įvestis = visada tas pats UUID
  • Atkuriamas: Galite UUID atkurti bet kuriuo metu
  • Nuoseklus: Tas pats UUID skirtingose sistemose
  • Negalima iškoduoti: Iš UUID negalima atkurti originalaus pavadinimo
  • ℹ️ Vienas UUID: V3/v5 atveju generuojamas tik vienas UUID (ta pati įvestis = tas pats išvestis)

Praktinis naudojimas:

// Pavyzdys: URL konvertavimas į UUID v5
Namespace: URL
Name: https://example.com/api/users/123
Result: 886313e1-3b8a-5372-9b90-0c9aee199e5d

// Tas pats įvestis = visada tas pats UUID
Namespace: DNS
Name: google.com
Result: visada tas pats UUID, skirtas google.com

Kaip saugiai naudoti UUID?

Kriptografinis saugumas

Mūsų generatorius naudoja crypto.getRandomValues(), kuris yra kriptografiškai saugus atsitiktinių skaičių generatorius. Priešingai nei Math.random(), kuris yra nuspėjamas ir netinkamas saugumo tikslams, crypto.getRandomValues() suteikia tikrąją entropiją, tinkančią:

  • Saugumo prieigos raktų generavimui
  • Sesijos ID
  • API raktams
  • Kriptografinėms programoms

UUID versijų palyginimas

VersijaPagrindasSusidūrimaiLaiko rūšiavimasDB našumasNaudojimas
v1Laiko žyma + MACMaža✅ Taip❌ BlogesnisSena versija, auditas
v3MD5 maišaJokių (deterministinis)❌ Ne⚠️ VidutinisKonvertavimas (sena versija)
v4AtsitiktinisItin maža❌ Ne⚠️ VidutinisBendras naudojimas
v5SHA-1 maišaJokių (deterministinis)❌ Ne⚠️ VidutinisKonvertavimas (rekomenduojama)
v6Rūšiuota laiko žymaMaža✅ Taip✅ GeresnisModerni DB su laiku
v7Unix laiko žymaMaža✅ Taip✅ GeriausiasNauji projektai

UUID vs kiti identifikatoriai

TipasDydisSusidūrimaiLaiko rūšiavimasNaudojimas
Automatinio didinimo ID4-8 baitaiGarantuotai unikalus lentelėjePaprastos programos, vietinė DB
UUID v416 baitųPraktiškai neįmanomaPaskirstytos sistemos, API
UUID v716 baitųPraktiškai neįmanomaModerni DB su našumu
ULID16 baitųPraktiškai neįmanomaUUID + leksikografinis rūšiavimas
Snowflake ID8 baitaiGarantuotai unikalus teisingai sukonfigūravusTwitter, paskirstytos sistemos
NanoIDKonfigūruojamaPriklauso nuo ilgioURL-draugiški ID

Įdiegimas skirtingomis kalbomis

JavaScript/TypeScript

// UUID v4 - Paprasčiausias būdas (modernios naršyklės)
const uuid = crypto.randomUUID();

// UUID v4 - Rankinis įdiegimas
function generateUUIDv4() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
    const r = (crypto.getRandomValues(new Uint8Array(1))[0] & 0x0f) >> (c === 'x' ? 0 : 2);
    const v = c === 'x' ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });
}

// UUID v7 - Rekomenduojama duomenų bazėms
function generateUUIDv7() {
  const timestamp = Date.now();
  const timeHi = (timestamp >> 16).toString(16).padStart(8, '0');
  const timeLow = (timestamp & 0xFFFF).toString(16).padStart(4, '0');

  const randomBytes = crypto.getRandomValues(new Uint8Array(10));
  const randomHex = Array.from(randomBytes)
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');

  return `${timeHi}-${timeLow}-7${randomHex.substr(0, 3)}-${randomHex.substr(3, 4)}-${randomHex.substr(7)}`;
}

Python

import uuid

# UUID v4
uuid_v4 = str(uuid.uuid4())
# Output: '6ba7b810-9dad-11d1-80b4-00c04fd430c8'

# UUID v1
uuid_v1 = str(uuid.uuid1())

Java

import java.util.UUID;

// UUID v4
String uuidV4 = UUID.randomUUID().toString();

PHP

// UUID v4 (PHP 7+)
function generateUUID() {
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        mt_rand(0, 0xffff), mt_rand(0, 0xffff),
        mt_rand(0, 0xffff),
        mt_rand(0, 0x0fff) | 0x4000,
        mt_rand(0, 0x3fff) | 0x8000,
        mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    );
}

C#

using System;

// UUID v4
Guid uuid = Guid.NewGuid();
string uuidString = uuid.ToString();

Geroji praktika

UUID saugojimas duomenų bazėje

PostgreSQL:

CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT NOW()
);

MySQL 8.0+:

CREATE TABLE users (
    id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())),
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Patarimas: MySQL atveju UUID saugokite kaip BINARY(16) vietoj CHAR(36), kad sutaupytumėte vietos ir pagreitintumėte indeksavimą.

UUID patvirtinimas

function isValidUUID(uuid) {
  const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
  return regex.test(uuid);
}

UUID konvertavimas

// Brūkšnelių pašalinimas
const compact = uuid.replace(/-/g, '');

// Brūkšnelių pridėjimas atgal
function formatUUID(compactUuid) {
  return [
    compactUuid.substring(0, 8),
    compactUuid.substring(8, 12),
    compactUuid.substring(12, 16),
    compactUuid.substring(16, 20),
    compactUuid.substring(20, 32)
  ].join('-');
}

Problemų sprendimas (Troubleshooting)

UUID v3/v5 neveikia

Problema: Pasirinkus v3 arba v5, niekas nesugeneruojama

Sprendimas:

  1. ✅ Patikrinkite, ar užpildėte „Pavadinimo“ laukelį – jis yra privalomas!
  2. ✅ Pasirinkite tinkamą vardų sritį pagal savo įvesties tipą
  3. ✅ Tinkamų įvesčių pavyzdžiai:
    • DNS: example.com, google.com
    • URL: https://example.com/page
    • Bet koks tekstas: mano-programa-v1

Patarimas: Pirmiausia pabandykite paprastą reikšmę, pvz., test, ir DNS vardų sritį.

Laiku pagrįstas UUID (v1, v6, v7) turi keistą laiką

Problema: Sugeneruotas UUID turi netikėtą laiko žymą

Sprendimas:

  1. ✅ Patikrinkite datos ir laiko parinkiklį – ar nustatytas teisingas laikas?
  2. ✅ Datos ir laiko parinkiklis naudoja jūsų vietinę laiko juostą
  3. ✅ Palikite datos ir laiko parinkiklį tuščią, kad būtų nustatytas dabartinis laikas

UUID negalima nukopijuoti

Problema: Mygtukas „Kopijuoti viską“ neveikia

Sprendimas:

  1. ✅ Patikrinkite, ar sugeneravote UUID (jie nėra tušti)
  2. ✅ Kai kurioms naršyklėms reikalingas HTTPS, kad veiktų iškarpinės API
  3. ✅ Alternatyviai pasirinkite tekstą teksto laukelyje ir nukopijuokite rankiniu būdu (Ctrl+C)

Dažnai užduodami klausimai (DUK)

Ar gali įvykti UUID kolizija? Teoriškai taip, bet tikimybė yra astronomiškai maža. Generuojant 1 milijardą UUID v4 per sekundę 100 metų, kolizijos tikimybė yra maždaug 0,00000006%. Praktiškai kolizija niekada neįvyks.
Ar UUID tinka kaip pirminis raktas duomenų bazėje? Priklauso nuo naudojimo atvejo. UUID idealiai tinka paskirstytoms sistemoms ir situacijoms, kai reikalingas globalus unikalumas. Paprastoms programoms su viena duomenų baze automatinis didinimas gali būti efektyvesnis.
Ar šiuo įrankiu sugeneruoti UUID yra saugūs? Taip, mes naudojame „Web Crypto API“ (`crypto.getRandomValues()`), kuris suteikia kriptografiškai saugias atsitiktines vertes. Viskas vyksta lokaliai jūsų naršyklėje.
Kuo skiriasi UUID versijos? - **v1**: Laiko žyma + MAC/atsitiktinis – chronologinis rūšiavimas, blogesnis DB našumas - **v3/v5**: Maišavimu pagrįstas – deterministinis, žinomų identifikatorių konvertavimui - **v4**: Atsitiktinis – saugiausias, dažniausiai naudojamas - **v6**: Perskirstyta laiko žyma – geresnis DB našumas nei v1 - **v7**: Unix laiko žyma – geriausias DB našumas + laiko rūšiavimas
Kurią UUID versiją turėčiau naudoti? Daugeliu atvejų naudokite **v4** (atsitiktinis). Duomenų bazėms su laiko rūšiavimu naudokite **v7** (moderni) arba **v6** (standartas). Žinomų identifikatorių (URL, DNS) konvertavimui naudokite **v5** (SHA-1).
Ar galiu naudoti UUID prieigos raktams ir API raktams? UUID v4 tinka sesijos ID ir panašiems prieigos raktams. API raktams apsvarstykite ilgesnių atsitiktinių eilučių (pvz., 256 bitų verčių) arba specializuotų bibliotekų naudojimą.
Koks yra UUID dydis? UUID yra 128 bitų (16 baitų). Kaip eilutės formatas su brūkšneliais jis užima 36 simbolius. Be brūkšnelių – 32 šešioliktainiai simboliai.

UUID alternatyvos

ULID (Universally Unique Lexicographically Sortable Identifier)

  • 128 bitų ID (tas pats kaip UUID)
  • Leksikografiškai rūšiuojamas pagal sukūrimo laiką
  • Kompaktiškesnis atvaizdavimas (26 simboliai vietoj 36)
  • Nepaisantis didžiųjų/mažųjų raidžių base32 kodavimas

Pavyzdys: 01ARZ3NDEKTSV4RRFFQ69G5FAV

NanoID

  • Mažesnis dydis nei UUID (standartiškai 21 simbolis)
  • URL draugiškas (be specialių simbolių)
  • Greitesnis generavimas
  • Konfigūruojamas ilgis ir abėcėlė

Pavyzdys: V1StGXR8_Z5jdHi6B-myT

Snowflake ID (Twitter)

  • 64 bitų ID (mažesnis nei UUID)
  • Laiko atžvilgiu rūšiuojamas
  • Yra darbuotojo ID ir sekos numeris
  • Reikalinga centralizuota konfigūracija

Pavyzdys: 1234567890123456789

Našumas ir optimizavimas

Generavimo greitis

Mūsų generatorius gali sugeneruoti:

  • 1 UUID: < 1 ms
  • 100 UUID: ~10-20 ms
  • 1000 UUID: ~100-200 ms

Našumo patarimai

  1. Paketinis generavimas – Jei reikia daug UUID, generuokite juos iš karto, o ne po vieną
  2. Saugoti DB – Indeksuokite UUID stulpelius greitai paieškai
  3. Suspaudimas – Saugokite UUID dvejetainiu pavidalu (16 baitų) vietoj eilutės (36 baitai)
  4. Talpyklos naudojimas – Kai kuriais atvejais galite iš anksto sugeneruoti ir saugoti UUID talpykloje

Kūrėjams

UUID v4 struktūra

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|        |    |    |    |
|        |    |    |    └─ 48 atsitiktinių duomenų bitai (mazgas)
|        |    |    └────── 16 atsitiktinių duomenų bitų su variantu (laikrodžio_seka)
|        |    └─────────── 12 atsitiktinių duomenų bitų + 4 versijos bitai (laikas_aukštai_ir_versija)
|        └──────────────── 16 atsitiktinių duomenų bitų (laikas_vidury)
└───────────────────────── 32 atsitiktinių duomenų bitai (laikas_žemiau)
  • Versija (4 bitai): visada 0100 (dvejetainis) = 4 (šešioliktainis)
  • Variantas (2-3 bitai): visada 10 (dvejetainis) pagal RFC 4122

UUID testavimas

// Jest test
describe('UUID Generator', () => {
  test('generates valid UUID v4', () => {
    const uuid = generateUUIDv4();
    const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
    expect(regex.test(uuid)).toBe(true);
  });

  test('generates unique UUIDs', () => {
    const uuid1 = generateUUIDv4();
    const uuid2 = generateUUIDv4();
    expect(uuid1).not.toBe(uuid2);
  });
});

Saugumo aspektai

Ko negalima daryti su UUID

Nenaudokite UUID v1 jautrioms programoms – Jame yra laiko žyma, kuri gali kelti saugumo riziką

Nenaudokite Math.random() UUID generavimui – Jis nėra kriptografiškai saugus

Nepasikliaukite UUID autorizavimui – UUID galima atspėti (nors su itin maža tikimybe)

Nesaugokite UUID slapukuose be šifravimo – Naudokite pasirašytus slapukus arba JWT

Ką daryti

Daugeliu atvejų naudokite UUID v4 – Didžiausia entropija ir saugumas

Sujunkite UUID su kitomis saugumo priemonėmis – Sesijos valdymui naudokite HTTPS, HttpOnly slapukus ir trumpą galiojimo laiką

Patvirtinkite UUID serveryje – Visada patikrinkite UUID formatą ir versiją

Naudokite kriptografiškai saugius atsitiktinumo šaltiniuscrypto.getRandomValues() naršyklėje, /dev/urandom Linux’e

Įdomūs faktai

  • Galimų UUID v4 skaičius: 2^122 ≈ 5.3 × 10^36 (340 undecilijonų)
  • Reikalinga kolizija: 50% tikimybei susidurti turite sugeneruoti 2.71 × 10^18 UUID (2.71 kvintilijonų)
  • Visų galimų UUID dydis: Jei kiekvieną UUID saugotume kaip 16 baitų, visa erdvė užimtų 85 zettabaitus (85 milijardus terabaitų)
  • Kilmė: UUID buvo standartizuotas kaip DCE (Distributed Computing Environment) dalis 1990 m.