Contare i tentativi falliti
Fa parte della sezione Autenticazione e sicurezza del percorso Node.js di Coddy. Lezione 21 di 24.
Un limitatore di accessi deve ricordare i tentativi non riusciti tra una richiesta e l’altra. Una Map memorizza i valori associandoli a delle chiavi. Usa ogni nome utente come chiave, così i tentativi non riusciti di un account non influiranno sugli altri.
const counts = new Map();
const old = counts.get('bo') ?? 0;
counts.set('bo', old + 1);counts.get(key) restituisce undefined se la chiave non esiste, quindi il valore di ripiego inizializza il conteggio a zero. Mantieni la Map fuori dalla funzione di richiesta per conservarla mentre questo server è in esecuzione. In questo esercizio, ogni richiesta rappresenta un tentativo non riuscito. La scadenza verrà trattata in un passaggio separato; al momento, questa Map continua a contare finché non riavvii il server premendo «Esegui».
Sfida
FacileQuesto è un piccolo progetto di esercitazione. La configurazione è già predisposta; modifica solo exercise.js.
Incrementa il conteggio per lo username fornito e restituiscilo in count. Invia POST {"username":"ada"} due volte a /result: i conteggi saranno 1 e poi 2. Inviando bo si ottiene 1; inviando di nuovo ada si ottiene 3.
Crea tu la Map e posizionala in modo che la seconda richiesta possa vedere il primo conteggio. Premendo di nuovo Run, il server si riavvia e questo archivio in memoria viene svuotato.
Provalo tu
// Crea l'archivio dei conteggi in modo che persista tra le richieste.
export function exercise({ username }) {
return { count: 0 };
}
Tutte le lezioni di Autenticazione e sicurezza
1Password
Byte e testo esadecimaleDerivare una chiave dalla passwordUn nuovo saltNon memorizzare mai le passwordConfrontare i byte della chiaveVerificare una passwordRegole di registrazione4Proprietari e sicurezza
Solo le tue noteRuoli di amministratoreEsercitati da solo: Playground Express