[GUIDE] Komplett Base64 Referens
Allt du behöver veta om Base64-kodning: teori, implementation och bästa praxis.
// 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