[KILAVUZ] 8 dakika okuma

[KILAVUZ] Tam Base64 Referansı

Base64 kodlama hakkında bilmeniz gereken her şey: teori, uygulama ve en iyi uygulamalar.

Ocak 2025 | fundamentals

// BASE64 NEDİR?

Base64, ikili verileri 64 ASCII karakter kullanarak temsil eden bir ikili-metin kodlama şemasıdır. Metin verileri için tasarlanmış medya üzerinden saklanması ve aktarılması gereken ikili verileri kodlamak için tasarlanmıştır.

Base64 karakter seti A-Z, a-z, 0-9 ve iki ek karakter (genellikle + ve /) artı dolgu için = içerir.

// BASE64 NASIL ÇALIŞIR

Base64 kodlaması, ikili verileri alıp ASCII karakterlerinin bir dizisine dönüştürerek çalışır. İşlem şunları içerir:

1. Girdiyi 6-bit parçalara böl (Base64 karakter başına 6 bit kullanır) 2. Her 6-bit değeri Base64 alfabesindeki bir karakterle eşle 3. Gerekirse '=' karakterleriyle dolgu ekle

// Örnek: 'Man' kelimesini Base64'e kodlama
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Birleştirilmiş: 010011010110000101101110
// 6-bit gruplara bölünmüş: 010011 010110 000101 101110
// Ondalık değerler: 19, 22, 5, 46
// Base64 karakterleri: T, W, F, u
// Sonuç: 'TWFu'

// YAYGIN KULLANIM ALANLARI

  • > HTML/CSS'de görsellerin gömülmesi (data URI'ler)
  • > JSON API'ler için ikili veri kodlama
  • > E-posta ekleri (MIME kodlama)
  • > Veritabanlarında ikili veri saklama
  • > Kimlik doğrulama tokenleri ve API anahtarları
  • > URL güvenli veri aktarımı

// JAVASCRIPT UYGULAMASI

Modern tarayıcılar yerleşik Base64 kodlama ve kod çözme fonksiyonları sağlar:

Metni Base64'e kodlamak için btoa() (binary to ASCII) kullanın. Base64'ü metne çözmek için atob() (ASCII to binary) kullanın.

// Metni Base64'e kodlama
const text = 'Hello, World!';
const encoded = btoa(text);
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==

// Base64'ü metne çözme
const decoded = atob(encoded);
console.log(decoded); // Hello, World!

// Unicode dizeler için TextEncoder/TextDecoder kullanın
const encoder = new TextEncoder();
const decoder = new TextDecoder();

const unicodeText = 'Hello, 世界!';
const bytes = encoder.encode(unicodeText);
const base64 = btoa(String.fromCharCode(...bytes));
console.log(base64);

// GÜVENLİK ÖNEMLERİ

Base64 şifreleme veya güvenlik DEĞİLDİR. Sadece veri temsili için kodlamadır. Önemli güvenlik notları:

Hassas veri koruması için asla tek başına Base64 kullanmayın. Enjeksiyon saldırılarını önlemek için her zaman Base64 girdisini doğrulayın. Base64'ün veri boyutunu ~%33 artırdığına dikkat edin.

  • > Base64 kolayca tersine çevrilebilir - güvenlik sağlamaz
  • > Her zaman Base64 girdisini doğrulayın ve temizleyin
  • > Hassas veriler için uygun şifreleme kullanın
  • > Web uygulamaları için URL güvenli Base64 varyantlarını düşünün
  • > Bazı bağlamlarda dolgu oracle saldırılarından haberdar olun

// EN İYİ UYGULAMALAR

  • > Web uygulamaları için URL güvenli Base64 kullanın (+ yerine -, / yerine _)
  • > Her zaman dolguyu doğru şekilde işleyin
  • > Girdi uzunluğunu ve karakterleri doğrulayın
  • > Büyük veriler için kodlama öncesi sıkıştırmayı düşünün
  • > Çok büyük veri kümeleri için akış kullanın
  • > Geçersiz girdi için uygun hata işleme uygulayın