> base64url | jwt | url-güvenli <

// Base64url - URL ve dosya adları için güvenli, dolgusu olmayan Base64 varyantı

[URL-SAFE]

URL uyumlu

Özel URL karakterleri yoktur – sorgu parametreleri ve yollar için güvenlidir.

[JWT]

JWT standardı

JSON Web Token ve OAuth 2.0 spesifikasyonlarında kullanılır.

[NO-PADDING]

İ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

Base64Base64url
+-
/_
=—

// 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.

Diğer diller