Tutti gli articoli

Basic Authentication: come funziona il modo più semplice per proteggere una risorsa HTTP

L'HTTP Basic Authentication è uno dei metodi più antichi e semplici per proteggere una risorsa con una password: il browser chiede username e password, e questi vengono inviati al server a ogni richiesta. Questa semplicità è anche il suo punto debole principale.

Come si costruisce l'header Authorization

Username e password vengono uniti da due punti (username:password), poi l'intera stringa viene codificata in Base64 e inserita nell'header Authorization: Basic <stringa_codificata>. Il browser reinvia automaticamente questo header a ogni richiesta successiva dopo il primo login riuscito.

Perché Base64 non è sicurezza

Base64 è uno schema di codifica, non una cifratura: chiunque può decodificare la stringa e riottenere username:password in pochi secondi, senza bisogno di alcuna chiave. Se la richiesta viene intercettata — su una rete Wi-Fi pubblica non protetta, per esempio — le credenziali vengono esposte immediatamente.

Accenti italiani e dimensione del token Base64

Base64 codifica byte, non caratteri, quindi conta la codifica della stringa originale. Una lettera senza accento occupa 1 byte in UTF-8, mentre caratteri come à, è, é, ì, ò, ù, comuni in molte parole e cognomi italiani, ne occupano 2. Una password come Città_Perù123 produce quindi un token Base64 sensibilmente più lungo di una password puramente ASCII con lo stesso numero di caratteri. Prima della RFC 7617 (2015), la specifica originale di Basic Auth non definiva nemmeno una codifica dei caratteri per username e password, il che creava reali problemi di interoperabilità non appena entravano in gioco caratteri accentati.

A cosa serve

  • Proteggere rapidamente con una password un server di staging o uno strumento interno durante lo sviluppo.
  • Costruire un header Authorization corretto per testare manualmente un'API con curl o Postman.
  • Capire perché usare Basic Auth su HTTP semplice è considerato una falla di sicurezza seria.

Basic Auth non ha un meccanismo di logout nativo

Il browser mette in cache le credenziali e aggiunge automaticamente l'header Authorization a ogni richiesta successiva verso la stessa origine, finché la scheda non viene chiusa — il protocollo semplicemente non prevede un pulsante "esci" standard. Per forzare il logout di un utente, i server ricorrono a trucchi: restituire deliberatamente un 401 con un valore di realm diverso, oppure contare sul fatto che l'utente chiuda da solo tutte le schede del browser.

Prova lo strumento