[KILAVUZ] Tam Base64 Referansı
Base64 kodlama hakkında bilmeniz gereken her şey: teori, uygulama ve en iyi uygulamalar.
// 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