Un codice di verifica deve restare valido abbastanza a lungo da essere consegnato e inserito, limitando al contempo la possibilità di indovinarlo o riutilizzarlo. Misura il flusso di verifica completo prima di sceglierne la durata.
Per quanto tempo deve restare valido il codice di verifica?
Non superare i dieci minuti per un codice di autenticazione inviato, includendo consegna e inserimento.
La guida all'autenticazione del NIST fissa quel massimo per l'autenticazione tramite un canale separato. Richiede inoltre che il server accetti il codice una sola volta, impedendo il riutilizzo dopo un'autenticazione riuscita.
Segna il codice come usato quando viene accettato. Rifiuta un nuovo invio dello stesso codice anche se arriva prima della scadenza.
Dieci minuti è un massimo, non un tempo di attesa consigliato. Scegli una finestra più breve quando le tue misurazioni di consegna e inserimento lo consentono.
Un codice che impiega quaranta secondi ad arrivare lascia nove minuti e venti secondi in una finestra di dieci minuti. Includi il tempo di lettura e digitazione quando usi le tue misurazioni di arrivo.
I codici generati da un'app di autenticazione seguono un modello temporale diverso. Usa le regole TOTP o HOTP corrispondenti quando l'applicazione genera il codice localmente.
Quante cifre deve avere?
Usa almeno sei cifre generate in modo casuale. Imposta un limite ai tentativi falliti.
Il NIST richiede almeno sei cifre decimali da un generatore casuale approvato per i segreti di autenticazione inviati. Un contatore prevedibile o un timestamp non soddisfa questo requisito.
Sei cifre casuali danno un milione di codici possibili. Cinque tentativi distinti hanno cinque probabilità su un milione, ovvero una su duecentomila.
Conta i tentativi falliti per account. Il NIST richiede che un nuovo codice preservi quel contatore, in modo che il reinvio non possa creare tentativi illimitati.
Un limite ai tentativi richiede anche un percorso di recupero per gli utenti legittimi che lo esauriscono. Decidi come riottenere l'accesso senza azzerare il limite per un attaccante.
Dovrei usare otto cifre?
Usa otto cifre quando la probabilità di indovinamento più bassa giustifica due cifre in più da inserire.
Otto cifre casuali danno cento milioni di codici possibili. Con cinque tentativi, la probabilità diventa cinque su cento milioni.
È cento volte inferiore a cinque tentativi contro sei cifre. Mantieni lo stesso limite di tentativi quando aumenti la lunghezza del codice.
Codici più lunghi non risolvono il problema dei tentativi illimitati. Implementa il limite di tentativi prima di considerare le cifre aggiuntive come protezione sufficiente.
Cosa posso configurare in Bird?
Imposta la policy del codice di verifica dello spazio di lavoro. Controlla le impostazioni risolte restituite per ogni verifica.
| Campo | Cosa scegliere |
|---|---|
code_length | Bird accetta da 4 a 8 caratteri. Scegli almeno sei per questa policy |
code_type | Controlla il set di caratteri restituito, numeric o alphanumeric |
ttl_seconds | Bird accetta da 1 a 59940 secondi. Mantieni la finestra di autenticazione a 600 secondi o meno |
max_attempts | Scegli da 1 a 10 invii errati prima che la verifica fallisca |
resend_cooldown_seconds | Scegli da 0 a 3600 secondi tra un invio e l'altro al destinatario |
La durata consentita da API si estende oltre questa raccomandazione di autenticazione. Imposta il valore in modo deliberato invece di trattare il massimo accettato come una scadenza adeguata.
Una richiesta di verifica può sovrascrivere code_length per quella verifica. Controlla la sua policy risolta quando indaghi su un comportamento diverso dalla configurazione dello spazio di lavoro.
Cosa scegliere?
- Parti con sei cifre casuali e un limite di tentativi basso e applicato.
- Dimensiona la finestra di validità in base ai tempi misurati di consegna e inserimento, entro dieci minuti.
- Usa otto cifre quando l'azione richiede una probabilità di indovinamento più bassa.
- Imponi l'uso singolo e preserva il contatore dei tentativi falliti quando emetti un nuovo codice.
In breve
Non superare i dieci minuti.
La consegna e l'inserimento consumano entrambi la finestra di validità. Scegli una durata più breve quando il flusso misurato lo consente.
Usa almeno sei cifre casuali.
Conta i tentativi falliti oltre a scegliere una lunghezza del codice. Codici più lunghi non sostituiscono un limite di tentativi.
Accetta ogni codice una sola volta.
Rifiuta un codice già accettato anche se la sua finestra di validità non è terminata.
Mantieni il contatore dei tentativi tra i reinvii.
L'emissione di un nuovo codice non deve concedere all'account una nuova scorta di tentativi.