Come si usa
- Incolla nel campo di input la stringa che vuoi controllare.
- Leggi l’esito: valido o non valido, la variante rilevata (standard o sicura per URL) e la dimensione decodificata.
- Se vengono elencati dei problemi, usa le posizioni indicate per trovare caratteri non validi, spazi bianchi o padding fuori posto.
- Guarda il tipo di contenuto rilevato per capire se i dati sono testo o un file come PNG, PDF o ZIP.
Quando un Base64 è valido
- Alfabeto. Sono ammessi solo
A-Z,a-z,0-9e altri due caratteri:+e/nel Base64 standard,-e_in Base64URL. Una stringa che mescola le due coppie di solito è stata danneggiata o ricomposta a partire da due fonti diverse. - Padding. Il segno
=può comparire solo alla fine, al massimo due volte. Un padding nel mezzo indica di solito che sono stati concatenati due valori codificati. - Lunghezza. Con il padding, la lunghezza è un multiplo di 4. Senza padding va bene qualsiasi lunghezza tranne 4n + 1: un singolo carattere avanzato contiene solo 6 bit, non abbastanza per un byte.
I decodificatori rigorosi aggiungono un’altra regola: i bit meno significativi inutilizzati dell’ultimo carattere devono essere zero. Molti decodificatori ignorano quei bit, ma alcuni, come base64.StdEncoding.Strict() di Go, rifiutano la stringa.
Errori comuni e come correggerli
| Problema | Causa tipica | Soluzione |
|---|---|---|
| Carattere non valido | Virgolette, barre rovesciate o sequenze %2B e %3D copiate insieme al valore | Rimuovi i caratteri in più o decodifica prima come URL |
| Spazi nel mezzo | Segni + trasformati in spazi quando il valore è passato attraverso un URL o un form | Ripristina i +, oppure usa Base64URL negli URL |
| Lunghezza di 4n + 1 | Valore troncato da un limite di colonna, da una riga di log o da una copia parziale | Copia di nuovo il valore completo |
| Padding nel mezzo | Due stringhe Base64 unite insieme | Separa le parti e decodificale una alla volta |
| Interruzioni di riga | A capo MIME o PEM | Di solito innocue; rimuovile dove è richiesta una sola riga |
Valido non significa sensato
Base64 non ha header né checksum, quindi la validità dice solo che una stringa può essere decodificata. Molte parole comuni superano il controllo: quattro lettere qualsiasi formano un gruppo valido. Per questo il validatore decodifica anche i dati e ne riporta dimensione e tipo di contenuto. Un testo leggibile o una firma di file nota, come PNG, PDF o ZIP, è un buon indizio che la stringa sia davvero Base64; una manciata di byte casuali no. Per provare anche altre codifiche, usa il rilevatore di codifica.
Validare Base64 nel codice
// JavaScript: Base64 standard con padding (corrisponde anche a una stringa vuota)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/
# Python: genera un errore invece di ignorare i caratteri non validi
import base64, binascii
try:
base64.b64decode(s, validate=True)
except binascii.Error:
print('invalid')
Domande frequenti
Perché una parola comune risulta Base64 valido?
test, per esempio, si decodifica in tre byte. Controlla il tipo di contenuto rilevato: se il risultato non è né testo leggibile né un tipo di file noto, probabilmente l’input non è mai stato Base64.Un Base64 con spazi o interruzioni di riga è valido?
MIME e PEM suddividono il Base64 in righe e la maggior parte dei decodificatori ignora gli spazi bianchi. Campi JSON, header HTTP, JWT e data URI si aspettano invece una stringa unica e continua. Il validatore elenca gli spazi bianchi a parte, così puoi decidere se contano nel punto in cui userai la stringa.
Un Base64 senza padding = è valido?
= finché la lunghezza non è un multiplo di 4. Le stringhe senza padding di 4n + 1 caratteri non sono mai valide.Come posso verificare in JavaScript se una stringa è Base64?
atob() all’interno di try/catch. Tieni presente che atob() genera un InvalidCharacterError con un input errato, ma accetta senza segnalarli spazi bianchi e padding mancante, e non accetta i caratteri sicuri per URL.