Onaltılık, Base64URL veya alfasayısal biçimde kriptografik olarak güvenli rastgele token'lar oluşturun — tarayıcınızda.
API anahtarları, oturum tanımlayıcıları, webhook sırları, parola sıfırlama kodları ve CSRF token'larının ortak tek bir gereksinimi vardır: tahmin edilmeleri imkânsız olmalıdır. Bu, Math.random()'ı, zaman damgalarını ve onlardan türetilen her şeyi devre dışı bırakır — bunlar kaba kuvvetle kırılabilecek kadar öngörülebilirdir. Bu oluşturucu, tarayıcıların işletim sistemi entropisiyle tohumladığı kriptografik olarak güvenli sözde rastgele sayı üreteci (CSPRNG) olan crypto.getRandomValues'u kullanır — TLS anahtarlarını oluşturmak için kullanılan kaynağın ta kendisi.
Uzunluk seçeneği, her token'ın kaç rastgele bayt içereceğini belirler (16 ile 128 arası, varsayılan 32) — alfasayısal modda ise kaç karakter olacağını. Onaltılık, her baytı 0-9a-f aralığından iki karakterle kodlar; Base64URL aynı baytları harf, rakam, eksi ve alt çizgiden oluşan daha kısa, URL güvenli bir dizeye sıkıştırır; alfasayısal ise karakterleri 62 karakterlik A-Z a-z 0-9 kümesinden çeker. Alfasayısal mod teknik bir not hak ediyor: 256, 62'ye tam bölünemediğinden, her rastgele baytın naifçe 62'ye göre modunu almak bazı karakterlerin diğerlerinden daha sık görünmesine yol açardı (mod sapması). Bu oluşturucu bunun yerine reddetme örneklemesi kullanır — 248 ve üzerindeki baytlar atılır ve yeniden çekilir — böylece her karakter tam olarak eşit olasılıklıdır.
Durum satırı tahmini entropiyi gösterir: onaltılık ve Base64URL için bayt başına 8 bit, alfasayısal için karakter başına log2(62) ≈ 5,95 bit. Pratik bir kural olarak 128 bit zaten kaba kuvvetle kırılamaz düzeydedir; 256 bit — 32 baytlık varsayılan — uzun ömürlü API anahtarlarının standardıdır. Her şey tarayıcınızda yerel olarak üretilir; token'ları hiçbir sunucu görmez ve gerçek sır olarak kullanılmaları güvenlidir. Onlara buna göre davranın: sunucu tarafında yalnızca token'ın hash'ini saklayın, düz değeri yalnızca bir kez gösterin ve açığa çıktığından şüphelendiğiniz anahtarları döndürün.
Entropi = uzunluk × log2(alfabe boyutu). 32 baytlık bir token, hangi kodlamada olursa olsun 256 bit entropi taşır; alfasayısal bir token karakter başına log2(62) ≈ 5,95 bit taşır, dolayısıyla 43 alfasayısal karakter ≈ 256 bit eder.
32 bayt (256 bit), uzun ömürlü API anahtarları için sağlam bir varsayılandır; 16 bayt (128 bit) ise güvenlikle ilgili her şey için pratik alt sınırdır. Daha uzun token'ların burada hiçbir maliyeti yok, o yüzden cömert tarafta kalın.
256 bayt değerini, 256'yı tam bölmeyen bir alfabeye eşlerken ortaya çıkan dengesiz dağılımdır — bazı karakterler biraz daha olası hâle gelir ve bu, etkin entropiyi ölçülebilir biçimde azaltır. Bu araç, alfabe boyutunun en büyük tam katının üzerindeki baytları atarak reddetme örneklemesiyle bunu önler.
Hayır. Token'lar crypto.getRandomValues tarafından yerel olarak üretilir ve asla iletilmez, günlüğe kaydedilmez veya saklanmaz — bu sayfa hiçbir ağ isteği yapmaz, dolayısıyla token'lar gerçek sır olarak kullanılabilir.
Yalnızca kodlama — rastgelelik kaynağı aynıdır. Onaltılık en uzunudur ama her yerde ayrıştırılabilir; Base64URL yaklaşık üçte bir daha kısadır ve URL'lerde güvenlidir; alfasayısal tüm noktalama işaretlerinden kaçınır, bu da izin verilen karakterleri kısıtlayan sistemlerde işe yarar.
Teoride evet, pratikte hayır: 256 bitte bir kopyayla karşılaşma olasılığı, bir donanım arızası olasılığının çok altındadır. Çakışma direnci, tahmin edilemez rastgele token'ları sırlar için iyi birer tanımlayıcı yapan şeyin ta kendisidir.
Vai.la, herhangi bir URL'yi tıklama istatistikleri, QR Code ve kendi biolink'inizle birlikte kısa bir bağlantıya dönüştürür.
Vai.la, araçların nasıl kullanıldığından veya sonuçlarına dayanarak alınan kararlardan sorumlu değildir.