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

  1. Incolla il codice di emissione, verifica, refresh e logout, sostituendo prima ogni segreto reale.
  2. Indica che tipo di client usa l’API e dove conserva il token.
  3. 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àFrammentoRischioCorrezione
Altajwt.verify(token, secret)Nessuna lista esplicita di algoritmi: dipendi dai default della libreriaalgorithms: ['HS256']
Alta—iss e aud non verificati: passa un token emesso per un altro servizioissuer e audience
Mediareq.user = payloadCi si fida dell’intero payloadCopiare solo sub e role
Media—verify lancia eccezioni non gestitetry/catch e 401 generico
[DA COMPLETARE]—Emissione, refresh e logout non presentiMi 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.

Prompt correlati