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:
- Zgjidhni versionin v1, v6 ose v7
- Vendosni datën dhe kohën duke përdorur zgjedhësin e datës-kohës
- 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:
- Zgjidhni hapësirën emërore sipas llojit të identifikuesit tuaj
- Futni emrin/vlerën
- Gjeneroni UUID
Shembuj:
| Hapësira Emërore | Emri (hyrja) | Përdorimi |
|---|---|---|
| DNS | example.com | Konvertimi i emrit të domenit në UUID |
| DNS | google.com | Çdo uebfaqe ka një UUID unike |
| URL | https://example.com/page | Konvertimi i URL-së në UUID |
| URL | https://api.example.com/users/123 | Pikë fundore API si UUID |
| OID | 1.3.6.1.4.1.343 | Identifikues Objekti në UUID |
| X.500 | CN=John Doe,O=Company | Emë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
| Versioni | Baza | Përplasje | Renditje Kohore | Performanca DB | Përdorimi |
|---|---|---|---|---|---|
| v1 | Kohë-Stampë + MAC | E ulët | ✅ Po | ❌ Më keq | Trashëgimi, auditim |
| v3 | Hash MD5 | Asnjë (deterministike) | ❌ Jo | ⚠️ Mesatare | Konvertime (trashëgimi) |
| v4 | E rastësishme | Jashtëzakonisht e ulët | ❌ Jo | ⚠️ Mesatare | Përdorim i përgjithshëm |
| v5 | Hash SHA-1 | Asnjë (deterministike) | ❌ Jo | ⚠️ Mesatare | Konvertime (rekomandohet) |
| v6 | Kohë-stampë e renditur | E ulët | ✅ Po | ✅ Më mirë | DB moderne me kohë |
| v7 | Kohë-stampë Unix | E ulët | ✅ Po | ✅ Më e mira | Projekte të reja |
UUID vs Identifikues të Tjerë
| Tipi | Madhësia | Përplasje | Renditje Kohore | Përdorimi |
|---|---|---|---|---|
| ID Auto-increment | 4-8 bajtë | E garantuar unike brenda tabelës | ❌ | Aplikacione të thjeshta, DB lokale |
| UUID v4 | 16 bajtë | Praktikisht e pamundur | ❌ | Sisteme të shpërndara, API |
| UUID v7 | 16 bajtë | Praktikisht e pamundur | ✅ | DB moderne me performancë |
| ULID | 16 bajtë | Praktikisht e pamundur | ✅ | UUID + renditje leksikografike |
| Snowflake ID | 8 bajtë | E garantuar unike me konfigurim të saktë | ✅ | Twitter, sisteme të shpërndara |
| NanoID | E konfigurueshme | Varet nga gjatësia | ❌ | ID 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:
- ✅ Kontrolloni që keni plotësuar fushën “Emri” - është e detyrueshme!
- ✅ Zgjidhni hapësirën emërore të saktë sipas llojit të hyrjes tuaj
- ✅ Shembuj të hyrjeve të vlefshme:
- DNS:
example.com,google.com - URL:
https://example.com/page - Çdo tekst:
aplikacioni-im-v1
- DNS:
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:
- ✅ Kontrolloni zgjedhësin e datës-kohës - është vendosur koha e saktë?
- ✅ Zgjedhësi i datës-kohës përdor zonën tuaj kohore lokale
- ✅ 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:
- ✅ Kontrolloni që keni gjeneruar UUID (nuk janë bosh)
- ✅ Disa shfletues kërkojnë HTTPS për API-në e clipboard-it
- ✅ 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 kohoreCilin 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ë
- 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ë
- Ruajtja në DB – Indeksoni kolonat UUID për kërkim të shpejtë
- Kompresimi – Ruani UUID në formë binare (16 bajtë) në vend të stringut (36 bajtë)
- 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