Verificare un’autenticazione JWT: errori comuni e codice corretto
Controlla la tua implementazione JWT rispetto agli errori tipici (algoritmi, scadenza, archiviazione, refresh token, revoca) e ottieni problemi per gravità, codice corretto e test. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.
Avanzato · Codice · In attesa di revisione editoriale
Prompt
Agisci come ingegnere di sicurezza applicativa specializzato nell’autenticazione delle API.
Rivedi questa implementazione di autenticazione JWT:
{{codice}}
Contesto:
- Stack e libreria JWT: {{stack}}
- Tipo di client: {{client}}
- Chi emette i token: {{emittente}}
Consegna:
1. Problemi con gravità (critica, alta, media, bassa), frammento interessato, rischio spiegato in una frase e correzione. Verifica almeno:
- Verifica della firma con un elenco esplicito di algoritmi ammessi; rifiuto di `alg: none` e della confusione tra algoritmi simmetrici e asimmetrici.
- Validazione di `exp`, `nbf`, `iss` e `aud`, con un piccolo margine di sfasamento dell’orologio.
- Durata dell’access token e uso di refresh token con rotazione e rilevamento del riuso.
- Revoca e logout: lista di blocco, versione di sessione o token di breve durata.
- Archiviazione lato client: `localStorage` rispetto a un cookie `HttpOnly`, `Secure`, `SameSite`, e la protezione CSRF che ogni opzione richiede.
- Segreti e chiavi: robustezza, dove sono salvati, rotazione con `kid` o JWKS.
- Dati sensibili nel payload (solo codificato, non cifrato) e dimensione del token.
- Gestione degli errori: messaggi che non rivelino informazioni e log senza token completi.
2. Codice corretto per il mio stack, con una libreria mantenuta e senza crittografia fatta in casa.
3. Test automatici per ogni problema critico o alto: token scaduto, firma non valida, `alg` non ammesso, audience errata e refresh token riutilizzato.
4. Un ordine di priorità delle correzioni se non posso fare tutto subito.
Vincoli:
- Non affermare che il sistema sia ora del tutto sicuro; consiglia una revisione di sicurezza o un penetration test prima della produzione se gestisce dati sensibili.
- Se manca una parte del flusso (emissione, refresh o logout), chiedimela prima di trarre conclusioni o segnala [DA COMPLETARE].
- Non riportare mai segreti reali presenti nel codice: sostituiscili con segnaposto.Come usarlo
- Incolla il codice di emissione, verifica, refresh e logout, sostituendo prima ogni segreto reale.
- Indica che tipo di client usa l’API e dove conserva il token.
- Correggi prima i problemi critici e aggiungi i relativi test alla CI.
Esempio d'uso
Stack: Node.js con Express e jsonwebtoken · Client: SPA su un altro sottodominio · Emittente: l’API stessa · Codice: middleware di autenticazione ed endpoint /refresh.
Esempio di risultato
1. Rilievi
| Gravità | Frammento | Rischio | Correzione |
|---|---|---|---|
| Alta | jwt.verify(token, secret) | Nessuna lista esplicita di algoritmi: dipendi dai default della libreria | algorithms: ['HS256'] |
| Alta | — | iss e aud non verificati: passa un token emesso per un altro servizio | issuer e audience |
| Media | req.user = payload | Ci si fida dell’intero payload | Copiare solo sub e role |
| Media | — | verify lancia eccezioni non gestite | try/catch e 401 generico |
| [DA COMPLETARE] | — | Emissione, refresh e logout non presenti | Mi serve quel codice |
2. Codice corretto
const jwt = require('jsonwebtoken');
const VERIFY_OPTS = {
algorithms: ['HS256'], // mai fidarsi dell’alg dichiarato dal token
issuer: 'https://api.esempio.it', // [DA COMPLETARE]
audience: 'spa-esempio', // [DA COMPLETARE]
clockTolerance: 30, // secondi di tolleranza dell’orologio
};
function requireAuth(req, res, next) {
const token = req.cookies?.access_token; // cookie HttpOnly, Secure, SameSite
if (!token) return res.status(401).json({ error: 'unauthorized' });
try {
const { sub, role } = jwt.verify(token, process.env.JWT_SECRET, VERIFY_OPTS);
req.user = { id: sub, role };
return next();
} catch {
return res.status(401).json({ error: 'unauthorized' }); // nessun dettaglio al client
}
}
Leggere il token da un cookie richiede cookie-parser e protezione CSRF sulle rotte che modificano dati…
Dati chiave
- Categoria
- Programmazione e sviluppo · API
- Tipo di output
- Codice
- Livello
- Avanzato
- Pensato per
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificato in
- In attesa di verifica editoriale
- Variabili
- Codice attuale, Stack e libreria, Tipo di client e Emittente dei token
- Lingua
- Italiano
- Prezzo
- Gratuito, senza registrazione
- Aggiornato
- 07/11/2026
Domande frequenti
Meglio salvare il JWT in localStorage o in un cookie?
localStorage è esposto in caso di vulnerabilità XSS. Un cookie HttpOnly non è leggibile da JavaScript, ma richiede protezione CSRF e un SameSite configurato bene. Il prompt spiega cosa comporta ciascuna opzione nel tuo caso.
Come faccio il logout se i JWT non si possono invalidare?
Con access token di breve durata e refresh token revocabili lato server, oppure con una versione di sessione per utente controllata a ogni richiesta. Così si può togliere l’accesso senza aspettare la scadenza.
A cosa serve questo prompt?
Controlla la tua implementazione JWT rispetto agli errori tipici (algoritmi, scadenza, archiviazione, refresh token, revoca) e ottieni problemi per gravità, codice corretto e test.
Con quali strumenti di IA funziona?
È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.
Come personalizzo il prompt?
Clicca su «Personalizza» e compila le variabili (Codice attuale, Stack e libreria, Tipo di client e Emittente dei token). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.
Serve esperienza per usarlo?
È di livello avanzato: è pensato per persone con esperienza nell'argomento, in grado di valutare e regolare il risultato.
Questo prompt è gratuito?
Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.
Posso fidarmi dell'output dell'IA?
Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.