UUID Nedir? Evrensel Benzersiz Tanımlayıcıların Tam Açıklaması
Hızlı Yanıt
UUID, 36 karakter (32 hex rakam artı 4 tire) olarak temsil edilen 128-bit identifier'dır. UUID'ler koordinasyon olmadan pratik olarak benzersizdir —collision olasılığı ihmal edilebilir. UUID v4 (random) en yaygın sürümdür. Ücretsiz UUID Generator kullanın.
giriiş
UUID (Universally Unique Identifier), Microsoft terminolojisinde GUID (Globally Unique Identifier) de denir, merkezi koordinasyon olmadan pratik olarak benzersiz olması garanti edilen 128-bit identifier'dır. UUID'ler RFC 4122 tarafından tanımlanır ve veritabanı primary key, request ID, session token ve dağıtık sistem identifier olarak yaygın kullanılır. En yaygın sürüm, rastgele bit kullanan UUID v4'tür.
Adım adım
-
UUID yapısını anlayın
Bir UUID 128 bittir ve 5 grupta 32 onaltılık basamak olarak görüntülenir: 8-4-4-4-12, tirelerle ayrılmış (ör. 550e8400-e29b-41d4-a716-446655440000). 13. rakam sürümü (v4 için 4), 17. rakam ise varyantı gösterir.
-
UUID sürümlerini öğrenin
v1: zamana dayalı (zaman damgası + MAC adresi) — zaman sıralıdır ancak kimlik sızdırır. v3: MD5 karma işlemiyle isme dayalı. v4: rastgele — en yaygın olanı, gizlilik kaygısı yok. v5: SHA-1 karması ile isme dayalı. v6 ve v7: v1'e göre geliştirilmiş gizlilikle zaman sıralıdır.
-
Çarpışma olasılığını anlayın
UUID v4'ün 2^122 olası değeri vardır. 103 trilyon UUID'nin çarpışma olasılığı %50'dir. Pratik kullanım için (milyonlarca kimlik), çarpışma olasılığı fiilen sıfırdır; UUID'leri koordinasyon olmadan bağımsız olarak oluşturabilirsiniz.
-
UUID'leri uygun şekilde kullanın
Neredeyse tüm kullanım durumları için v4'ü kullanın (veritabanı kimlikleri, istek kimlikleri, oturum belirteçleri). Veritabanı konumu için zaman sıralı kimliklere ihtiyacınız varsa v7'yi kullanın. Güvenlik açısından hassas bağlamlarda v1'den kaçının; bir zaman damgası ve MAC adresi içerir.
Örnekler
UUID v4 (rastgele)
Giriş: crypto.getRandomValues ile oluşturulmuştur
Çıkış: 550e8400-e29b-41d4-a716-446655440000
UUID v1 (zamana dayalı)
Giriş: Zaman damgası + MAC adresi
Çıkış: a3bbf0ee-d6e4-11ed-a5b3-3c9703e8b4a1
Sıfır UUID
Giriş: All zeros
Çıkış: 00000000-0000-0000-0000-000000000000
Yaygın Sorunlar
- UUID'ler için Math.random()'un kullanılması kriptografik olarak güvenli değildir. Tarayıcılarda crypto.getRandomValues() veya crypto.randomUUID() öğesini kullanın.
- UUID'leri dize olarak depolama — UUID dizesi 36 bayttır; UUID türü (16 bayt) olarak saklandığında daha verimlidir. Mevcut olduğunda veritabanlarında yerel UUID türünü kullanın.
- V1'i güvenlik açısından hassas bağlamlarda kullanmak —v1, ne zaman ve nerede oluşturulduğuna ilişkin bilgileri sızdırabilecek bir zaman damgası ve MAC adresi yerleştirir. Anonimlik için v4'ü kullanın.
- UUID'lerin gerçekten benzersiz olduğunu varsayarsak, pratik olarak benzersizdirler (çarpışma olasılığı göz ardı edilebilir), ancak benzersiz oldukları matematiksel olarak garanti edilmez.
İpuçları
- Neredeyse tüm kullanım durumları için UUID v4'ü kullanın; rastgeledir, gizlilik kaygısı yoktur ve tüm modern veritabanları tarafından desteklenir.
- Kitaplığı olmayan yerleşik bir v4 oluşturucu için modern tarayıcılarda crypto.randomUUID() işlevini kullanın.
- Daha iyi depolama ve dizin performansı için UUID'leri dizeler (36 bayt) yerine veritabanlarında (16 bayt) UUID/GUID türü olarak saklayın.
- Tarayıcınızda anında UUID'ler oluşturmak için UUID Oluşturucumuzu kullanın; kayıt gerektirmez, tamamen özeldir.