Gjenerator UUID Falas Online - Versionet v1, v3-v7

Çfarë është UUID?

UUID (Identifikues Universal Unik) është një identifikues 128-bit i përdorur në sistemet kompjuterike për identifikimin unik të informacionit. UUID standardizohet sipas RFC 4122 dhe, falë entropisë së tij të madhe, garanton një probabilitet praktikisht zero të përplasjes – kjo do të thotë se dy UUID të gjeneruara në mënyrë të pavarur do të jenë pothuajse me siguri unike.

UUID ka një format standard: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, ku çdo x është një shifër heksadecimale (0-9, a-f), M tregon versionin e UUID, dhe N tregon variantin.

Versionet e UUID

UUID v1 (Kohë-Stampë + Adresë MAC)

UUID v1 bazohet në kohë-stampën aktuale dhe një vlerë të rastësishme (në shfletues në vend të adresës MAC). Përdor intervale 100-nanosekonde që nga 15 tetor 1582 (Kalendari Gregorian).

Përdorimi:

  • Situata kur keni nevojë për renditje kronologjike të UUID-ve
  • Debugging dhe logim (UUID përmban informacionin për kohën e krijimit)
  • Sistemet e shpërndara me sinkronizim kohor

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

Avantazhet:

  • UUID mund të renditet kronologjikisht sipas kohës së krijimit
  • I dobishëm për auditim dhe debugging
  • Përmban informacionin e kohë-stampës

Disavantazhet:

  • Rrezik potencial sigurie – përmban kohë-stampën
  • Në shfletues nuk përmban adresën reale MAC (zëvendësohet me një vlerë të rastësishme)
  • Lokalitet i dobët i DB (kohë-stampa është në bitet me rend të ulët)

UUID v3 (Hash MD5)

UUID v3 gjenerohet duke përdorur hash-in MD5 të një hapësire emërore UUID dhe një emri. Deterministic – e njëjta hapësirë emërore + emër gjithmonë do të krijojnë të njëjtën UUID.

Përdorimi:

  • Konvertimi i URL-ve, emrave DNS ose identifikuesve të tjerë në UUID
  • Situata kur keni nevojë për UUID të riprodhueshëm
  • Lidhja midis sistemeve të ndryshme të identifikimit

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

Avantazhet:

  • Deterministic (e njëjta hyrje = e njëjta dalje)
  • Ideale për konvertimin e identifikuesve të njohur
  • Asnjë përplasje për hyrje të ndryshme

Disavantazhet:

  • MD5 është një algoritëm i vjetëruar (preferoni v5)
  • Kërkon një hapësirë emërore dhe një emër
  • Nuk mund të rimarrësh hyrjen origjinale

UUID v4 (I Rastësishëm) - REKOMANDOHET

Versioni më i përdorur i UUID. UUID v4 gjenerohet në mënyrë plotësisht të rastësishme duke përdorur një gjenerator numrash të rastësishëm kriptografikisht të sigurt (crypto.getRandomValues()).

Përdorimi:

  • Çelësat primarë të bazave të të dhënave
  • Identifikuesit e sesioneve (session IDs)
  • Emrat unikë të fajllave
  • Tokenat API
  • Qëllime të përgjithshme, ku keni nevojë për një ID të garantuar unike

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

Avantazhet:

  • Entropia dhe siguria maksimale
  • Asnjë varësi nga koha ose parametrat e sistemit
  • Implementimi më i thjeshtë

Probabiliteti i përplasjes: Gjatë gjenerimit të 1 miliard UUID-ve në sekondë për 100 vjet, shansi për një përplasje është afërsisht 0.00000006%.

UUID v5 (Hash SHA-1)

UUID v5 është i njëjtë si v3, por përdor SHA-1 në vend të MD5. Një alternativë më moderne dhe më e sigurt se v3.

Përdorimi:

  • E njëjta si v3, por me siguri më të mirë
  • Preferohet ndaj v3 për projekte të reja
  • Gjenerimi i UUID nga URL, emrat DNS, OID, X.500 DN

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

Avantazhet:

  • Deterministic
  • SHA-1 është më i fuqishëm se MD5
  • I përshtatshëm për lidhjen midis sistemeve

Disavantazhet:

  • SHA-1 gjithashtu konsiderohet i vjetëruar (por ende më i sigurt se MD5)
  • Kërkon një hapësirë emërore dhe një emër

UUID v6 (Kohë-Stampë e Renditur)

UUID v6 është një version i përmirësuar i v1 me bite kohe të rirenditura për indeksim më të mirë të DB. Projektuar për të zgjidhur problemet me lokalitetin në bazat e të dhënave.

Përdorimi:

  • Çelësat primarë të bazave të të dhënave me renditje kohore
  • Sistemet që kërkojnë renditje kronologjike dhe performancë DB
  • Një alternativë më moderne se v1

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

Avantazhet:

  • Lokalitet më i mirë i DB se v1 (kohë-stampa në bitet me rend të lartë)
  • Renditje kronologjike
  • E përputhshme me standardin UUID

Disavantazhet:

  • Më pak i përdorur se v1/v4
  • Ende përmban informacione kohore (rrezik sigurie)

UUID v7 (Kohë-Stampë Unix)

UUID v7 përdor kohë-stampën Unix (milisekonda nga 1970) + bite të rastësishme. Versioni më i ri i UUID me lokalitetin më të mirë të DB.

Përdorimi:

  • Çelësat primarë modernë të bazave të të dhënave
  • Sistemet që kërkojnë performancë + renditje kohore
  • Zëvendësim për v1/v6 në projekte të reja

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

Avantazhet:

  • Lokalitetin më të mirë të DB nga të gjitha versionet
  • Kohë-stampa Unix është standarde
  • Kombinon avantazhet e rastësisë dhe renditjes kohore

Disavantazhet:

  • Specifikim relativisht i ri (RFC 4122bis)
  • Më pak i mbështetur në sistemet e trashëguara

Cilin version të UUID të përdorni?

Udhëzues Vendimmarrës

Keni nevojë për siguri maksimale dhe rastësi? → Përdorni UUID v4 (zgjedhja më e zakonshme)

Keni nevojë për renditje kohore dhe performancë DB? → Përdorni UUID v7 (modern) ose UUID v6 (standard)

Keni nevojë për UUID të riprodhueshëm nga identifikues ekzistues? → Përdorni UUID v5 (SHA-1) ose UUID v3 (MD5, trashëgimi)

Keni nevojë për një kohë-stampë dhe gjurmë auditimi? → Përdorni UUID v1 (trashëgimi, performancë më e dobët e DB)

Baza e të Dhënave

Për projekte të reja: UUID v7 ose v4

  • v7 është ideale për renditje kohore + performancë
  • v4 për rastësi maksimale pa informacione kohore

Për sisteme të trashëguara: UUID v1 ose v6

  • v6 ka lokalitet më të mirë të DB se v1
  • v1 është i mbështetur gjerësisht

Avantazhet e UUID si çelës primar:

  • Uniketi Global – Mund të lidhni të dhëna nga baza të ndryshme të të dhënave pa konflikt
  • Siguria – Ndryshe nga ID-të sekuenciale (1, 2, 3…), nuk mund të parashikohen vlerat e ardhshme
  • Sistemet e shpërndara – UUID mund të gjenerohet në mënyrë të pavarur në servera të shumtë pa koordinim
  • Bashkimi i bazave të të dhënave – Gjatë bashkimit të dy bazave të të dhënave nuk lindin konflikte

Disavantazhet:

  • Madhësi më e madhe (16 bajtë vs 4-8 bajtë për integer)
  • Indeksim më i ngadalshëm në disa baza të të dhënave (përdorni v6/v7 për performancë më të mirë)
  • Më pak i lexueshëm për njeriun

API dhe Shërbime Ueb

  • REST API – Identifikues unikë për burime
  • GraphQL – Identifikues globalë për nyje
  • Webhook – Gjurmimi i kërkesave dhe përgjigjeve
  • Tokena – ID sesionesh, tokena rifreskimi

Fajllat dhe Ruajtja

  • Emrat e fajllave – Parandalimi i përplasjeve gjatë ngarkimit
  • S3/Cloud Storage – Shtigje unike për objekte
  • Çelësat e cache-it – Identifikuesit në sistemet e cache-it

Aplikacionet Frontend

  • Komponentët React/Vue – Çelësa unikë për lista
  • ID të përkohshme – ID para ruajtjes në bazën e të dhënave
  • Ruajtja lokale – Çelësa për të dhënat e ruajtura
  • Aplikacionet offline-first – Gjenerimi i ID-ve pa lidhje me serverin

Funksionet e Avancuara të Gjeneratorit

Gjenerimi i UUID me Kohë të Personalizuar

Për versionet e bazuara në kohë (v1, v6, v7) mund të zgjidhni çdo kohë-stampë duke përdorur zgjedhësin e datës-kohës. Kjo është e dobishme për:

Testimi:

  • Simulimi i UUID-ve të krijuara në të kaluarën
  • Testimi i renditjes kohore në bazat e të dhënave
  • Riprodhimi i UUID-ve për debugging

Migrimi i të dhënave:

  • Gjenerimi i UUID-ve me kohë-stampa historike
  • Mbushja e të dhënave me vlera të sakta të kohë-stampës
  • Importimi i të dhënave nga periudha të ndryshme kohore

Auditim dhe Pajtueshmëri:

  • Rikonstruksioni i UUID-ve sipas kohës së krijimit të rekordit
  • Gjenerimi retroaktiv i identifikuesve

Shembull përdorimi:

  1. Zgjidhni versionin v1, v6 ose v7
  2. Vendosni datën dhe kohën duke përdorur zgjedhësin e datës-kohës
  3. Gjeneroni UUID me kohë-stampën tuaj të personalizuar

UUID bazuar në Hash (v3, v5)

Për UUID deterministike mund të përdorni versionet v3 (MD5) ose v5 (SHA-1):

Si të përdorni:

  1. Zgjidhni hapësirën emërore sipas llojit të identifikuesit tuaj
  2. Futni emrin/vlerën
  3. Gjeneroni UUID

Shembuj:

Hapësira EmëroreEmri (hyrja)Përdorimi
DNSexample.comKonvertimi i emrit të domenit në UUID
DNSgoogle.comÇdo uebfaqe ka një UUID unike
URLhttps://example.com/pageKonvertimi i URL-së në UUID
URLhttps://api.example.com/users/123Pikë fundore API si UUID
OID1.3.6.1.4.1.343Identifikues Objekti në UUID
X.500CN=John Doe,O=CompanyEmër i dalluar në UUID

Karakteristika të rëndësishme:

  • Deterministike: E njëjta hyrje = gjithmonë e njëjta UUID
  • Riprodhueshme: Mund të rikrijoni UUID-në në çdo kohë
  • Konsistente: E njëjta UUID në sisteme të ndryshme
  • Nuk mund të deshifrohet: Nga UUID nuk mund të merrni përsëri emrin origjinal
  • ℹ️ Një UUID: Për v3/v5 gjenerohet gjithmonë vetëm një UUID (e njëjta hyrje = e njëjta dalje)

Përdorim praktik:

// Shembull: Konvertimi i URL-së në UUID v5
Namespace: URL
Emri: https://example.com/api/users/123
Rezultati: 886313e1-3b8a-5372-9b90-0c9aee199e5d

// E njëjta hyrje = gjithmonë e njëjta UUID
Namespace: DNS
Emri: google.com
Rezultati: gjithmonë e njëjta UUID për google.com

Si të përdorni UUID në mënyrë të sigurt?

Siguria Kriptografike

Gjeneratori ynë përdor crypto.getRandomValues(), i cili është një gjenerator numrash të rastësishëm kriptografikisht të sigurt. Ndryshe nga Math.random(), i cili është i parashikueshëm dhe i papërshtatshëm për qëllime sigurie, crypto.getRandomValues() ofron entropi të vërtetë të përshtatshme për:

  • Gjenerimi i tokenave të sigurisë
  • ID sesionesh
  • Çelësa API
  • Aplikacione kriptografike

Krahasimi i Versioneve të UUID

VersioniBazaPërplasjeRenditje KohorePerformanca DBPërdorimi
v1Kohë-Stampë + MACE ulët✅ Po❌ Më keqTrashëgimi, auditim
v3Hash MD5Asnjë (deterministike)❌ Jo⚠️ MesatareKonvertime (trashëgimi)
v4E rastësishmeJashtëzakonisht e ulët❌ Jo⚠️ MesatarePërdorim i përgjithshëm
v5Hash SHA-1Asnjë (deterministike)❌ Jo⚠️ MesatareKonvertime (rekomandohet)
v6Kohë-stampë e renditurE ulët✅ Po✅ Më mirëDB moderne me kohë
v7Kohë-stampë UnixE ulët✅ Po✅ Më e miraProjekte të reja

UUID vs Identifikues të Tjerë

TipiMadhësiaPërplasjeRenditje KohorePërdorimi
ID Auto-increment4-8 bajtëE garantuar unike brenda tabelësAplikacione të thjeshta, DB lokale
UUID v416 bajtëPraktikisht e pamundurSisteme të shpërndara, API
UUID v716 bajtëPraktikisht e pamundurDB moderne me performancë
ULID16 bajtëPraktikisht e pamundurUUID + renditje leksikografike
Snowflake ID8 bajtëE garantuar unike me konfigurim të saktëTwitter, sisteme të shpërndara
NanoIDE konfigurueshmeVaret nga gjatësiaID miqësore me URL

Implementimi në Gjuhë të Ndryshme

JavaScript/TypeScript

// UUID v4 - Mënyra më e thjeshtë (shfletues modernë)
const uuid = crypto.randomUUID();

// UUID v4 - Implementim manual
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 - Rekomandohet për baza të dhënash
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();

Praktikat më të Mira

Ruajtja e UUID në Baza të Dhënash

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
);

Këshillë: Në MySQL, ruani UUID si BINARY(16) në vend të CHAR(36) për të kursyer hapësirë dhe për indeksim më të shpejtë.

Validimi i UUID

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);
}

Konvertimi i UUID

// Heqja e vizave ndarëse
const compact = uuid.replace(/-/g, '');

// Shtimi i vizave ndarëse përsëri
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('-');
}

Zgjidhja e Problemeve (Troubleshooting)

UUID v3/v5 nuk funksionon

Problem: Pas zgjedhjes së v3 ose v5, asgjë nuk gjenerohet

Zgjidhje:

  1. ✅ Kontrolloni që keni plotësuar fushën “Emri” - është e detyrueshme!
  2. ✅ Zgjidhni hapësirën emërore të saktë sipas llojit të hyrjes tuaj
  3. ✅ Shembuj të hyrjeve të vlefshme:
    • DNS: example.com, google.com
    • URL: https://example.com/page
    • Çdo tekst: aplikacioni-im-v1

Këshillë: Provoni së pari një vlerë të thjeshtë si test dhe hapësirën emërore DNS.

UUID me kohë (v1, v6, v7) ka kohë të çuditshme

Problem: UUID-ja e gjeneruar ka një kohë-stampë të papritur

Zgjidhje:

  1. ✅ Kontrolloni zgjedhësin e datës-kohës - është vendosur koha e saktë?
  2. ✅ Zgjedhësi i datës-kohës përdor zonën tuaj kohore lokale
  3. ✅ Lëreni zgjedhësin e datës-kohës bosh për kohën aktuale

UUID nuk mund të kopjohet

Problem: Butoni “Kopjo të Gjitha” nuk funksionon

Zgjidhje:

  1. ✅ Kontrolloni që keni gjeneruar UUID (nuk janë bosh)
  2. ✅ Disa shfletues kërkojnë HTTPS për API-në e clipboard-it
  3. ✅ Si alternativë, zgjidhni tekstin në textarea dhe kopjoni manualisht (Ctrl+C)

Pyetje të Shpeshta (FAQ)

A mund të ndodhë një përplasje UUID? Teorikisht po, por probabiliteti është astronomikisht i vogël. Gjatë gjenerimit të 1 miliard UUID v4 në sekondë për 100 vjet, shansi për një përplasje është afërsisht 0.00000006%. Në praktikë, një përplasje nuk ndodh kurrë.
A është UUID i përshtatshëm si çelës primar në bazën e të dhënave? Varet nga rasti i përdorimit. UUID është ideal për sistemet e shpërndara dhe situatat kur keni nevojë për unikitet global. Për aplikacione të thjeshta me një bazë të dhënash, auto-increment mund të jetë më efikas.
A janë të sigurta UUID-të e gjeneruara nga ky mjet? Po, ne përdorim Web Crypto API (`crypto.getRandomValues()`), e cila ofron vlera të rastësishme kriptografikisht të sigurta. Gjithçka ndodh lokalisht në shfletuesin tuaj.
Cili është ndryshimi midis versioneve të UUID? - **v1**: Kohë-stampë + MAC/rastësi - renditje kronologjike, performancë më e dobët e DB - **v3/v5**: Bazuar në hash - deterministike, për konvertimin e identifikuesve të njohur - **v4**: I rastësishëm - më i sigurt, më i përdorur - **v6**: Kohë-stampë e rirenditur - performancë më e mirë e DB se v1 - **v7**: Kohë-stampë Unix - performanca më e mirë e DB + renditje kohore
Cilin version të UUID duhet të përdor? Për shumicën e rasteve përdorni **v4** (i rastësishëm). Për baza të dhënash me renditje kohore përdorni **v7** (modern) ose **v6** (standard). Për konvertimin e identifikuesve të njohur (URL, DNS) përdorni **v5** (SHA-1).
A mund të përdor UUID për tokena dhe çelësa API? UUID v4 është i përshtatshëm për ID sesionesh dhe tokena të ngjashëm. Për çelësa API, merrni parasysh përdorimin e stringjeve më të gjata të rastësishme (p.sh. vlera 256-bit) ose bibliotekave të specializuara.
Sa të mëdha janë UUID-të? UUID ka 128 bit (16 bajtë). Në formatin string me viza, zë 36 karaktere. Pa viza, 32 karaktere heksadecimale.

Alternativat ndaj UUID

ULID (Identifikues Universal Unik i Renditshëm Leksikografikisht)

  • ID 128-bitësh (njësoj si UUID)
  • I renditshëm leksikografikisht sipas kohës së krijimit
  • Përfaqësim më kompakt (26 karaktere në vend të 36)
  • Kriptim base32 pa ndjeshmëri ndaj shkronjave të mëdha/të vogla

Shembull: 01ARZ3NDEKTSV4RRFFQ69G5FAV

NanoID

  • Madhësi më e vogël se UUID (21 karaktere standardisht)
  • Miqësor me URL (pa karaktere speciale)
  • Gjenerim më i shpejtë
  • Gjatësi dhe alfabet i konfigurueshëm

Shembull: V1StGXR8_Z5jdHi6B-myT

Snowflake ID (Twitter)

  • ID 64-bitësh (më e vogël se UUID)
  • I renditshëm sipas kohës
  • Përmban ID-në e punonjësit dhe numrin e sekuencës
  • Kërkon konfigurim të centralizuar

Shembull: 1234567890123456789

Performanca dhe Optimizimi

Shpejtësia e Gjenerimit

Gjeneratori ynë mund të gjenerojë:

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

Këshilla për Performancë

  1. Gjenerimi me grup (Batch generation) – Nëse keni nevojë për shumë UUID, gjenerojini të gjitha njëherësh në vend që një nga një
  2. Ruajtja në DB – Indeksoni kolonat UUID për kërkim të shpejtë
  3. Kompresimi – Ruani UUID në formë binare (16 bajtë) në vend të stringut (36 bajtë)
  4. Keshimi – Në disa raste mund të paragjeneroni UUID dhe t’i keshoni

Për Zhvilluesit

Struktura e UUID v4

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|        |    |    |    |
|        |    |    |    └─ 48 bit të dhënash të rastësishme (nyje)
|        |    |    └────── 16 bit të dhënash të rastësishme me variant (clock_seq)
|        |    └─────────── 12 bit të dhënash të rastësishme + 4 bit version (time_hi_and_version)
|        └──────────────── 16 bit të dhënash të rastësishme (time_mid)
└───────────────────────── 32 bit të dhënash të rastësishme (time_low)
  • Versioni (4 bit): gjithmonë 0100 (binar) = 4 (heks)
  • Varianti (2-3 bit): gjithmonë 10 (binar) për RFC 4122

Testimi i UUID

// 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);
  });
});

Aspekte të Sigurisë

Çfarë të mos bëni me UUID

Mos përdorni UUID v1 për aplikacione të ndjeshme – Përmban kohë-stampën, gjë që mund të jetë një rrezik sigurie

Mos përdorni Math.random() për gjenerimin e UUID – Nuk është kriptografikisht i sigurt

Mos u mbështetni te UUID për autorizim – UUID mund të parashikohet (edhe pse me një probabilitet jashtëzakonisht të vogël)

Mos ruani UUID në cookies pa enkriptim – Përdorni cookies të nënshkruara ose JWT

Çfarë të bëni

Përdorni UUID v4 për shumicën e rasteve – Entropia dhe siguria më e lartë

Kombinoni UUID me masa të tjera sigurie – Për menaxhimin e sesioneve përdorni HTTPS, cookies HttpOnly, dhe skadim të shkurtër

Validoni UUID në server – Gjithmonë kontrolloni formatin dhe versionin e UUID

Përdorni burime kriptografikisht të sigurta të rastësisëcrypto.getRandomValues() në shfletues, /dev/urandom në Linux

Kuriozitete

  • Numri i mundshëm i UUID v4: 2^122 ≈ 5.3 × 10^36 (340 undecilionë)
  • Përplasje e nevojshme: Për një shans 50% për përplasje, duhet të gjeneroni 2.71 × 10^18 UUID (2.71 kuadrilionë)
  • Madhësia e të gjitha UUID-ve të mundshme: Nëse do të ruanim çdo UUID si 16 bajtë, i gjithë hapësira do të zinte 85 zettabajtë (85 miliardë terabajtë)
  • Origjina: UUID u standardizua si pjesë e DCE (Distributed Computing Environment) në vitin 1990