[ANLEITUNG] 8 Min Lesezeit

[ANLEITUNG] Vollständige Base64 Referenz

Alles, was Sie über Base64-Kodierung wissen müssen: Theorie, Implementierung und Best Practices.

Januar 2025 | fundamentals

// WAS IST BASE64?

Base64 ist ein Binär-zu-Text-Kodierungsschema, das Binärdaten mit 64 ASCII-Zeichen darstellt. Es wurde entwickelt, um Binärdaten zu kodieren, die über Medien gespeichert und übertragen werden müssen, die für Textdaten ausgelegt sind.

Der Base64-Zeichensatz umfasst A-Z, a-z, 0-9 und zwei zusätzliche Zeichen (normalerweise + und /), plus = für Padding.

// WIE BASE64 FUNKTIONIERT

Base64-Kodierung funktioniert, indem Binärdaten genommen und in eine Zeichenkette aus ASCII-Zeichen umgewandelt werden. Der Prozess umfasst:

1. Die Eingabe in 6-Bit-Chunks aufteilen (Base64 verwendet 6 Bits pro Zeichen) 2. Jeden 6-Bit-Wert einem Zeichen im Base64-Alphabet zuordnen 3. Padding mit '='-Zeichen hinzufügen, falls erforderlich

// Beispiel: Kodierung von 'Man' zu Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Kombiniert: 010011010110000101101110
// Aufgeteilt in 6-Bit-Gruppen: 010011 010110 000101 101110
// Dezimalwerte: 19, 22, 5, 46
// Base64-Zeichen: T, W, F, u
// Ergebnis: 'TWFu'

// HÄUFIGE ANWENDUNGSFÄLLE

  • > Einbetten von Bildern in HTML/CSS (Daten-URIs)
  • > Kodierung von Binärdaten für JSON-APIs
  • > E-Mail-Anhänge (MIME-Kodierung)
  • > Speichern von Binärdaten in Datenbanken
  • > Authentifizierungs-Token und API-Schlüssel
  • > URL-sichere Datenübertragung

// JAVASCRIPT-IMPLEMENTIERUNG

Moderne Browser bieten integrierte Base64-Kodierungs- und Dekodierungsfunktionen:

Für die Kodierung von Text zu Base64 verwenden Sie btoa() (binary to ASCII). Für die Dekodierung von Base64 zu Text verwenden Sie atob() (ASCII to binary).

// Text zu Base64 kodieren
const text = 'Hallo, Welt!';
const encoded = btoa(text);
console.log(encoded); // SGFsbG8sIFdlbHQh

// Base64 zu Text dekodieren
const decoded = atob(encoded);
console.log(decoded); // Hallo, Welt!

// Für Unicode-Strings verwenden Sie TextEncoder/TextDecoder
const encoder = new TextEncoder();
const decoder = new TextDecoder();

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

// SICHERHEITSÜBERLEGUNGEN

Base64 ist KEINE Verschlüsselung oder Sicherheit. Es ist einfach eine Kodierung für die Datendarstellung. Wichtige Sicherheitshinweise:

Verwenden Sie niemals Base64 allein für den Schutz sensibler Daten. Validieren Sie immer Base64-Eingaben, um Injection-Angriffe zu verhindern. Beachten Sie, dass Base64 die Datengröße um etwa 33% erhöht.

  • > Base64 ist leicht umkehrbar - es bietet keine Sicherheit
  • > Validieren und bereinigen Sie immer Base64-Eingaben
  • > Verwenden Sie ordnungsgemäße Verschlüsselung für sensible Daten
  • > Erwägen Sie URL-sichere Base64-Varianten für Webanwendungen
  • > Seien Sie sich Padding-Oracle-Angriffen in manchen Kontexten bewusst

// BEST PRACTICES

  • > Verwenden Sie URL-sicheres Base64 für Webanwendungen (ersetzen Sie + mit -, / mit _)
  • > Behandeln Sie Padding immer korrekt
  • > Validieren Sie Eingabelänge und -zeichen
  • > Erwägen Sie Komprimierung vor der Kodierung bei großen Daten
  • > Verwenden Sie Streaming für sehr große Datensätze
  • > Implementieren Sie ordnungsgemäße Fehlerbehandlung für ungültige Eingaben