[GIDS] Volledige Base64 Referentie
Alles wat je moet weten over Base64 codering: theorie, implementatie en best practices.
// WAT IS BASE64?
Base64 is een binair-naar-tekst coderingschema dat binaire data weergeeft met 64 ASCII-karakters. Het is ontworpen om binaire data te coderen die moet worden opgeslagen en overgedragen via media die ontworpen zijn voor tekstuele data.
De Base64-karakterset bevat A-Z, a-z, 0-9, en twee extra karakters (meestal + en /), plus = voor padding.
// HOE BASE64 WERKT
Base64-codering werkt door binaire data te nemen en het om te zetten naar een string van ASCII-karakters. Het proces omvat:
1. Splits de invoer in 6-bit chunks (Base64 gebruikt 6 bits per karakter) 2. Koppel elke 6-bit waarde aan een karakter in het Base64-alfabet 3. Voeg padding toe met '=' karakters indien nodig
// Voorbeeld: Coderen van 'Man' naar Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Gecombineerd: 010011010110000101101110
// Gesplitst in 6-bit groepen: 010011 010110 000101 101110
// Decimale waarden: 19, 22, 5, 46
// Base64-karakters: T, W, F, u
// Resultaat: 'TWFu'
// VEEL VOORKOMENDE TOEPASSINGEN
- > Afbeeldingen insluiten in HTML/CSS (data URI's)
- > Binaire data coderen voor JSON API's
- > E-mailbijlagen (MIME-codering)
- > Binaire data opslaan in databases
- > Authenticatietokens en API-sleutels
- > URL-veilige datatransmissie
// JAVASCRIPT IMPLEMENTATIE
Moderne browsers bieden ingebouwde Base64 coderings- en decoderingsfuncties:
Voor het coderen van tekst naar Base64, gebruik btoa() (binary to ASCII). Voor het decoderen van Base64 naar tekst, gebruik atob() (ASCII to binary).
// Tekst coderen naar Base64
const text = 'Hello, World!';
const encoded = btoa(text);
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==
// Base64 decoderen naar tekst
const decoded = atob(encoded);
console.log(decoded); // Hello, World!
// Voor Unicode-strings, gebruik 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);
// BEVEILIGINGSOVERWEGINGEN
Base64 is GEEN versleuteling of beveiliging. Het is gewoon codering voor datarepresentatie. Belangrijke beveiligingsnotities:
Gebruik nooit Base64 alleen voor bescherming van gevoelige data. Valideer altijd Base64-invoer om injectie-aanvallen te voorkomen. Wees je ervan bewust dat Base64 de datagrootte met ~33% vergroot.
- > Base64 is gemakkelijk omkeerbaar - het biedt geen beveiliging
- > Valideer en zuiver altijd Base64-invoer
- > Gebruik juiste versleuteling voor gevoelige data
- > Overweeg URL-veilige Base64-varianten voor webapplicaties
- > Wees bewust van padding oracle-aanvallen in sommige contexten
// BEST PRACTICES
- > Gebruik URL-veilige Base64 voor webapplicaties (vervang + met -, / met _)
- > Behandel padding altijd correct
- > Valideer invoerlengte en karakters
- > Overweeg compressie vóór codering voor grote data
- > Gebruik streaming voor zeer grote datasets
- > Implementeer juiste foutafhandeling voor ongeldige invoer