Cryptology Academy · Lezione

Best practice per un'implementazione sicura di JWT

Conservi, ruoti e revochi i JWT in modo sicuro nelle applicazioni di produzione.

Lezione 4 di 413 passaggi

Best practice per un'implementazione sicura di JWT è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Principio fondamentale

I JWT sono sicuri solo quanto la loro implementazione. La specifica è flessibile; la flessibilità crea vulnerabilità. Seguire queste best practice per evitare le insidie comuni che hanno causato elusioni dell'autenticazione nei sistemi di produzione.

Vincolare l'algoritmo

Specificare sempre esplicitamente l'algoritmo previsto: jwt.decode(token, key, algorithms=["RS256"]). Non leggere mai l'algoritmo dall'header del token per selezionare la chiave di verifica o il percorso di codice. Questo previene gli attacchi alg=none e di confusione delle chiavi.

Scadenza breve e refresh token

Token di accesso: 15-60 minuti. Refresh token: 7-30 giorni, archiviati in cookie httpOnly (non in localStorage). Alla scadenza, il client usa il refresh token per ottenere un nuovo token di accesso dal server di autenticazione senza richiedere una nuova autenticazione.

Validazione di audience e issuer

Validare aud (audience) per assicurarsi che il token sia stato emesso per il proprio servizio e non per un altro. Validare iss (issuer) rispetto all'URL del proprio server di autenticazione. Senza questi controlli, un token di un'altra app firmato con la stessa chiave verrebbe accettato.

Archiviazione dei token

Token di accesso in memoria (variabile JS) — vengono cancellati alla chiusura della scheda. Refresh token in cookie httpOnly, Secure, SameSite=Strict — inaccessibili a JavaScript. Non archiviare mai i JWT in localStorage: XSS può sottrarli.

Strategia di revoca

I JWT sono stateless: non esiste una revoca integrata. Opzioni: mantenere una lista di revoca (denylist) verificata a ogni richiesta; usare una scadenza molto breve; usare token opachi con una ricerca centralizzata per i contesti ad alta sicurezza.

Rotazione delle chiavi

Ruotare regolarmente le chiavi di firma. Pubblicare più chiavi in JWKS con diversi valori di kid. Durante la rotazione: emettere nuovi token con il nuovo kid, mantenere attiva la vecchia chiave finché i vecchi token non scadono, quindi rimuovere la vecchia chiave da JWKS.

Dati sensibili nel payload

Non inserire mai dati sensibili (password, numeri di previdenza sociale, carte di credito) nel payload JWT: è codificato in base64url, non crittografato. Usare JWE (JSON Web Encryption) se servono claim crittografati, oppure conservare i dati sensibili sul server.

Solo HTTPS

Trasmettere i JWT solo tramite HTTPS. Un JWT intercettato su HTTP consente di eludere completamente l'autenticazione. Impostare il flag Secure sui cookie. Usare HSTS per impedire il downgrade del protocollo. Non registrare mai stringhe JWT complete nei log del server.

Scelta delle librerie

Usare librerie mantenute attivamente: PyJWT 2+, python-jose, auth0/node-jsonwebtoken 9+, Nimbus JOSE + JWT (Java). Evitare di implementare la verifica JWT da zero. Controllare regolarmente i database CVE per individuare vulnerabilità nelle librerie.

Test

Testare tutti i vettori d'attacco: inviare un token alg=none, un token di confusione RS256→HS256, un token scaduto, un token con audience errata e un payload manomesso. Usare jwt.io per creare token di test. Aggiungere test di integrazione che verifichino il rifiuto di questi token con 401.

Verifica rapida

Dove devono essere archiviati i refresh token in un'applicazione web?

Riepilogo

Usare i JWT in modo sicuro richiede algoritmi vincolati, una breve scadenza dei token di accesso, l'archiviazione dei refresh token in cookie httpOnly, la validazione di audience e issuer e la rotazione delle chiavi. Prossimo argomento: schemi crittografici di condivisione dei segreti.

Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Best practice per un'implementazione sicura di JWT» è gratuita?

Sì — il testo completo di «Best practice per un'implementazione sicura di JWT» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Best practice per un'implementazione sicura di JWT»?

Conservi, ruoti e revochi i JWT in modo sicuro nelle applicazioni di produzione. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Best practice per un'implementazione sicura di JWT»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Anatomia di JWT: header, payload e firma
  2. HS256 e RS256: JWT simmetrici e asimmetrici
  3. Vulnerabilità di JWT: alg=none e confusione delle chiavi
  4. Best practice per un'implementazione sicura di JWT
← Torna a Cryptology Academy