[GUIDE] 8 min läsning

[GUIDE] Komplett Base64 Referens

Allt du behöver veta om Base64-kodning: teori, implementation och bästa praxis.

Januari 2025 | fundamentals

// VAD ÄR BASE64?

Base64 är ett binärt-till-text-kodningsschema som representerar binär data med 64 ASCII-tecken. Det är designat för att koda binär data som behöver lagras och överföras via media designade för textdata.

Base64-teckenuppsättningen inkluderar A-Z, a-z, 0-9, och två ytterligare tecken (vanligtvis + och /), plus = för utfyllnad.

// HUR BASE64 FUNGERAR

Base64-kodning fungerar genom att ta binär data och konvertera den till en sträng av ASCII-tecken. Processen innebär:

1. Dela upp indata i 6-bitars segment (Base64 använder 6 bitar per tecken) 2. Koppla varje 6-bitars värde till ett tecken i Base64-alfabetet 3. Lägg till utfyllnad med '='-tecken om det behövs

// Exempel: Kodning av 'Man' till Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Kombinerat: 010011010110000101101110
// Delat i 6-bitars grupper: 010011 010110 000101 101110
// Decimalvärden: 19, 22, 5, 46
// Base64-tecken: T, W, F, u
// Resultat: 'TWFu'

// VANLIGA ANVÄNDNINGSOMRÅDEN

  • > Inbäddning av bilder i HTML/CSS (data-URI:er)
  • > Kodning av binär data för JSON API:er
  • > E-postbilagor (MIME-kodning)
  • > Lagring av binär data i databaser
  • > Autentiseringstoken och API-nycklar
  • > URL-säker dataöverföring

// JAVASCRIPT-IMPLEMENTATION

Moderna webbläsare tillhandahåller inbyggda funktioner för Base64-kodning och -avkodning:

För att koda text till Base64, använd btoa() (binary to ASCII). För att avkoda Base64 till text, använd atob() (ASCII to binary).

// Kodning av text till Base64
const text = 'Hello, World!';
const encoded = btoa(text);
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==

// Avkodning av Base64 till text
const decoded = atob(encoded);
console.log(decoded); // Hello, World!

// För Unicode-strängar, använd TextEncoder/TextDecoder
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);

// SÄKERHETSÖVERVÄGANDEN

Base64 är INTE kryptering eller säkerhet. Det är bara kodning för datarepresentation. Viktiga säkerhetsanteckningar:

Använd aldrig bara Base64 för skydd av känslig data. Validera alltid Base64-indata för att förhindra injektionsattacker. Var medveten om att Base64 ökar datastorleken med ~33%.

  • > Base64 är lätt att vända - det ger ingen säkerhet
  • > Validera och sanera alltid Base64-indata
  • > Använd korrekt kryptering för känslig data
  • > Överväg URL-säkra Base64-varianter för webbapplikationer
  • > Var medveten om padding oracle-attacker i vissa sammanhang

// BÄSTA PRAXIS

  • > Använd URL-säker Base64 för webbapplikationer (byt ut + mot -, / mot _)
  • > Hantera alltid utfyllnad korrekt
  • > Validera indatalängd och tecken
  • > Överväg komprimering före kodning för stora data
  • > Använd streaming för mycket stora dataset
  • > Implementera korrekt felhantering för ogiltig indata