Alternative e Casi Avanzati
Base32: Usa solo A-Z e 2-7 (32 caratteri), più sicuro per sistemi case-insensitive (Windows filesystem). Usato in: Google Authenticator TOTP codes, Bittorrent magnet links. Overhead 60% (vs 33% di Base64).
Base85 (Ascii85): Più efficiente di Base64, overhead solo 25%. Usato in PostScript, PDF, Git packs. Però meno compatibile (usa caratteri speciali <>).
Data URIs e Performance: Includere troppe immagini Base64 in HTML/CSS aumenta il file size e rallenta parsing. Limite consigliato: <5KB per immagine, max 2-3 images. Per file grandi, usa hosting separato + HTTP/2 multiplexing.
JWT Structure: Un JWT ha 3 parti separate da punti:
- Header:
{"alg":"HS256","typ":"JWT"} codificato - Payload: Claims (user ID, expiration, ecc.) codificati
- Signature: HMAC-SHA256(header+payload, secret)
MIME Types con Data URI: Specifica sempre il MIME type corretto:
- PNG:
data:image/png;base64,... - SVG:
data:image/svg+xml;base64,... - PDF:
data:application/pdf;base64,... - JSON:
data:application/json;base64,...
Quando NON usare Base64: File grandi (>100KB) perché aumentano del 33% e rallentano caricamento pagina. Video/audio (usa streaming HTTP invece). Dati già testuali (JSON, XML, CSV già sono testo, non serve encoding).
💡 Tip Sicurezza: Se codifichi dati user-generated in Base64 per includerli in HTML, DEVI comunque sanitizzare l'input prima! Un attaccante potrebbe inserire<script> tags codificati che, dopo il decode, causano XSS. Base64 non protegge da injection attacks.