Vai al contenuto
TextArray

Spiegazione della codifica Base64: cos'è e quando usarla

Blog /

Base64 è ovunque nello sviluppo web: incorporato nelle intestazioni delle e-mail, inserito negli URI dei dati, utilizzato nei token di autenticazione e avvolto attorno a file binari in protocolli di testo. Ma di cosa si tratta, veramente? E se confonde i dati, non li rende sicuri? La risposta è no: Base64 è codifica, non crittografia. È un modo per rappresentare dati binari o arbitrari come semplice testo ASCII, niente di più. Capire quando e perché usarlo può chiarire molti momenti confusi nello sviluppo.

Cos'è Base64?

Base64 è un metodo per codificare i dati binari in 64 caratteri ASCII sicuri: lettere A–Z, a–z, cifre 0–9, segni più e barre. Funziona prendendo l'input binario (sia esso testo, immagini o byte grezzi) e suddividendolo in blocchi da 6 bit. Ogni pezzo diventa un indice nell'alfabeto Base64, quindi l'output è sempre testo leggibile. Il "64" si riferisce alla dimensione dell'alfabeto: 26 + 26 + 10 + 2 = 64 caratteri.

Perché 64? Perché questi caratteri sono sicuri in quasi tutti i sistemi: e-mail, vecchi terminali, XML, JSON e testo semplice. Un file binario può danneggiarsi durante il transito se i byte speciali vengono interpretati erroneamente; Base64 garantisce che l'output sopravviva invariato attraverso qualsiasi canale basato su testo. Puoi codificare e decodificare Base64 istantaneamente nel tuo browser senza caricare i tuoi dati da nessuna parte.

Base64 non è crittografia

Questa è la distinzione fondamentale: Base64 confonde l’aspetto dei dati, ma chiunque può invertirlo. Se si codifica Base64 la password secret123, diventa c2VjcmV0MTIz - ma non è sicuro. La decodifica è altrettanto banale. Base64 è l'offuscamento della trasmissione, non la protezione della sicurezza. Se è necessario mantenere segreti i dati, utilizzare la crittografia (come AES), non Base64. Base64 è il modo in cui invii in modo sicuro dati crittografati attraverso un canale di testo, ma non è la crittografia stessa.

Usi comuni di Base64

Base64 è standard in diversi scenari del mondo reale:

  1. URI di dati. Invece di collegarsi a un file immagine, puoi incorporare l'immagine direttamente in HTML o CSS come URI di dati: data:image/png;base64,iVBORw0KG…. Ciò evita una richiesta HTTP aggiuntiva, utile per icone piccole o quando le risorse non possono essere ospitate separatamente.
  2. Allegati di posta elettronica. SMTP (protocollo di posta elettronica) è stato progettato per il testo. Gli allegati binari vengono codificati Base64 prima dell'invio, quindi decodificati dal client di posta al momento della ricezione.
  3. Token di autenticazione. Molte API utilizzano Base64 per i token, non per motivi di sicurezza, ma perché i token sono spesso dati binari che devono essere trasmessi come testo leggibile nelle intestazioni o negli URL.
  4. Incorporamento di file in JSON o XML. Se devi includere un BLOB binario (un PDF, un foglio di calcolo, un archivio) in una risposta API JSON, Base64 lo codifica come una stringa che non interrompe la struttura JSON.

Il sovraccarico delle dimensioni: Base64 rende i dati più grandi

Uno svantaggio: l'output Base64 è circa il 33% più grande del binario originale. Questo perché stai comprimendo 8 bit di input in blocchi da 6 bit e il riempimento è necessario quando la lunghezza dell'input non è un multiplo di 3. Quindi, se stai incorporando un'immagine da 300 KB come URI di dati, la versione Base64 è di circa 400 KB, più lenta da caricare e analizzare. Per le icone piccole questo sovraccarico vale la richiesta HTTP salvata; per file di grandi dimensioni, solitamente è meglio collegarli separatamente.

Varianti e relative codifiche

Usi Base64 standard + E /, che hanno significati speciali negli URL e nei nomi dei file. Base64 sicuro per URL sostituti - E _ invece, rendendolo sicuro per l'uso in percorsi e stringhe di query senza codifica percentuale. Se stai creando uno schema di codifica URL personalizzato, valuta se Codifica dell'URL o Base64 sicuro per URL soddisfa le tue esigenze.

Base64 è una delle numerose codifiche che risolvono diversi problemi. Codifica esadecimale rappresenta il binario come due caratteri leggibili per byte (più lenti da decodificare, ma senza riempimento e leggibili dall'uomo), spesso utilizzati negli hash e nei checksum. Entità HTML codificare caratteri speciali come < E & in modo che vengano visualizzati correttamente nelle pagine Web: un problema diverso dal trasporto binario arbitrario. Ogni codifica è uno strumento per un lavoro specifico.

",