> base64url | jwt | url-güvenli <
// Base64url - URL ve dosya adları için güvenli, dolgusu olmayan Base64 varyantı
URL uyumlu
Özel URL karakterleri yoktur – sorgu parametreleri ve yollar için güvenlidir.
JWT standardı
JSON Web Token ve OAuth 2.0 spesifikasyonlarında kullanılır.
İsteğe bağlı dolgu
Daha temiz URL'ler için dolgu karakterleri (=) kaldırılabilir.
>> teknik bilgiler
Base64url nasıl çalışır:
Base64url, "+" karakterini "-" ile ve "/" karakterini "_" ile değiştiren, Base64'ün bir varyantıdır; böylece çıktı URL'ler ve dosya adları için güvenli hale gelir. "=" dolgu karakteri genellikle URL'lerde sorun oluşturabileceği için kaldırılır.
Karşılaştırma:
Base64: SGVsbG8+Pw== Base64url: SGVsbG8-Pw
Neden Base64url kullanmalı?:
- >JWT belirteçleri
- >OAuth 2.0 akışları
- >URL sorgu parametreleri
- >Dosya adı kodlama
- >Web API imzaları
>> sık sorulan sorular
Base64url nedir?
Base64url, URL'ler ve dosya adları için güvenli bir Base64 kodlama varyantıdır. "+" karakterini "-" ile, "/" karakterini "_" ile değiştirir ve URL kodlama sorunlarını önlemek için isteğe bağlı olarak "=" dolgu karakterlerini kaldırır.
Neden URL'lerde normal Base64 kullanılmamalı?
Normal Base64, URL'lerde özel anlamı olan "+", "/" ve "=" karakterlerini kullanır. "+" boşluk olarak yorumlanabilir, "/" yol ayırıcısıdır ve "=" parametreler için kullanılır; bu da ayrıştırma hatalarına yol açabilir.
Base64url nerede kullanılır?
Base64url; JWT (JSON Web Tokens), OAuth 2.0 yetkilendirme kodları, SAML beyanları ve ikili verilerin URL veya HTTP başlıkları üzerinden iletilmesi gereken her türlü API'de yaygın olarak kullanılır.
Base64url'de dolgu zorunlu mudur?
Hayır, Base64url'de dolgu isteğe bağlıdır. Uzunluk hesaplanabildiği için birçok uygulama dolguyu atlar. Özellikle JWT spesifikasyonları, daha temiz URL'ler için dolguyu kullanmamayı şart koşar.
// Base64’ten farklar
| Base64 | Base64url |
|---|---|
| + | - |
| / | _ |
| = | — |
// Kodda Base64url
JavaScript btoa(s).replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'')
Node.js Buffer.from(s).toString('base64url')
Python base64.urlsafe_b64encode(b).rstrip(b'=')
Go base64.RawURLEncoding.EncodeToString(b)
Padding s + '=' * (-len(s) % 4)
>> Daha fazla soru
S: Base64url neden “=” işaretini atar?
C: Dolgu uzunluktan çıkarılabilir ve “=” URL’lerde ve sorgu dizelerinde özel anlam taşır. Bu yüzden JWT (RFC 7515) ve birçok API Base64url’yi dolgusuz yazar.
S: Çözmeden önce dolguyu nasıl geri eklerim?
C: Uzunluğun 4’e göre kalanına bakın: kalan 2 → ==, kalan 3 → =, kalan 0 → hiçbir şey ekleme. Kalan 1 asla geçerli değildir. Ayrıca - yerine +, _ yerine / koyun.
S: Base64url bir şifreleme midir?
C: Hayır, yalnızca bir kodlamadır; herkes geri çevirebilir. JWT payload içeriği okunabilir, bu yüzden içine sır koymayın.