Base64 kodlaması açıklandı: nedir ve ne zaman kullanılır?
Base64, web geliştirmenin her yerindedir; e-posta başlıklarına gömülüdür, veri URI'lerine yerleştirilmiştir, kimlik doğrulama belirteçlerinde kullanılır ve metin protokollerindeki ikili dosyalara sarılır. Ama gerçekte nedir? Ve eğer verileri karıştırıyorsa, bu onu güvenli kılmaz mı? Cevap hayır: Base64 şifreleme değil, kodlamadır. Bu, ikili veya rastgele verileri düz ASCII metni olarak temsil etmenin bir yoludur, başka bir şey değil. Ne zaman ve neden kullanılacağını anlamak, geliştirme aşamasındaki birçok kafa karıştırıcı anı açıklığa kavuşturabilir.
Base64 nedir?
Base64, ikili verileri 64 güvenli ASCII karakterine (A–Z, a–z harfleri, 0–9 rakamları, artı işaretleri ve eğik çizgiler) kodlamanın bir yöntemidir. İkili girdiyi (metin, resim veya ham bayt) alıp 6 bitlik parçalara bölerek çalışır. Her parça Base64 alfabesinde bir dizin haline gelir, böylece çıktı her zaman okunabilir metin olur. "64" alfabe boyutunu ifade eder: 26 + 26 + 10 + 2 = 64 karakter.
Neden 64? Çünkü bu karakterler neredeyse tüm sistemlerde (e-posta, eski terminaller, XML, JSON ve düz metin) güvenlidir. Özel baytların yanlış yorumlanması durumunda ikili dosya aktarım sırasında bozulabilir; Base64, çıktının herhangi bir metin tabanlı kanal aracılığıyla değişmeden hayatta kalmasını garanti eder. Yapabilirsiniz Base64'ü kodlamak ve kodunu çözmek Verilerinizi herhangi bir yere yüklemeden anında tarayıcınızda.
Base64 şifreleme değildir
Kritik ayrım budur: Base64 verilerin görünümünü karıştırır, ancak bunu herkes tersine çevirebilir. Şifreyi Base64 ile kodlarsanız secret123, olur c2VjcmV0MTIz — ama bu güvenli değil. Kod çözme de aynı derecede önemsizdir. Base64, güvenlik için koruma değil, iletim için gizlemedir. Verileri gizli tutmanız gerekiyorsa Base64 yerine şifreleme (AES gibi) kullanın. Base64, şifrelenmiş verileri bir metin kanalı aracılığıyla güvenli bir şekilde göndermenin yoludur, ancak şifrelemenin kendisi değildir.
Base64'ün yaygın kullanımları
Base64, birçok gerçek dünya senaryosunda standarttır:
- Veri URI'leri. Bir resim dosyasına bağlanmak yerine, resmi doğrudan HTML veya CSS'ye veri URI'si olarak gömebilirsiniz:
data:image/png;base64,iVBORw0KG…. Bu, küçük simgeler için veya varlıkların ayrı olarak barındırılamadığı durumlarda yararlı olan ekstra bir HTTP isteğini önler. - E-posta ekleri. SMTP (e-posta protokolü) metin için tasarlanmıştır. İkili ekler gönderilmeden önce Base64 ile kodlanır ve alındıktan sonra posta istemciniz tarafından kodu çözülür.
- Kimlik doğrulama belirteçleri. Çoğu API, belirteçler için Base64'ü kullanır; güvenlik için değil, ancak belirteçlerin genellikle başlıklarda veya URL'lerde okunabilir metin olarak iletilmesi gereken ikili veriler olması nedeniyle.
- Dosyaları JSON veya XML'e gömme. Bir JSON API yanıtına ikili bir blob (PDF, elektronik tablo, arşiv) eklemeniz gerekiyorsa Base64, bunu JSON yapısını bozmayacak bir dize olarak kodlar.
Boyut yükü: Base64 verileri büyütür
Dezavantajı: Base64 çıkışı orijinal ikili dosyadan yaklaşık %33 daha büyüktür. Bunun nedeni, 8 bitlik girişi 6 bitlik parçalara paketlemeniz ve giriş uzunluğu 3'ün katı olmadığında dolguya ihtiyaç duyulmasıdır. Dolayısıyla, 300 KB'lik bir görüntüyü veri URI'si olarak gömüyorsanız, Base64 sürümü yaklaşık 400 KB'dir; yüklenmesi ve ayrıştırılması daha yavaştır. Küçük simgeler için bu ek yük, kaydedilen HTTP isteğine değer; büyük dosyalar için bunları ayrı ayrı bağlamak genellikle daha iyidir.
Varyantlar ve ilgili kodlamalar
Standart Base64 kullanımları + Ve /URL'lerde ve dosya adlarında özel anlamlara sahip olan. URL güvenli Base64 yedekler - Ve _ bunun yerine, yüzde kodlaması olmadan yollarda ve sorgu dizelerinde kullanımı güvenli hale getirir. Özel bir URL kodlama şeması oluşturuyorsanız, URL kodlaması veya URL-güvenli Base64 ihtiyacınıza uygundur.
Base64, farklı sorunları çözen çeşitli kodlamalardan biridir. Onaltılık kodlama ikiliyi bayt başına iki okunabilir karakter olarak temsil eder (kod çözme daha yavaştır, ancak doldurma yoktur ve insan tarafından okunabilir), genellikle karma ve sağlama toplamlarında kullanılır. HTML varlıkları gibi özel karakterleri kodlayın < Ve & böylece web sayfalarında doğru şekilde görüntülenirler; bu, keyfi ikili aktarımdan farklı bir sorundur. Her kodlama belirli bir iş için bir araçtır.