Contando tentativas malsucedidas
Parte da seção Autenticação e segurança do Journey de Node.js da Coddy. Lição 21 de 24.
Um limitador de tentativas de login precisa se lembrar das tentativas malsucedidas entre as requisições. Um Map armazena valores associados a chaves. Use cada nome de usuário como chave para que as falhas de uma conta não afetem outra conta.
const counts = new Map();
const old = counts.get('bo') ?? 0;
counts.set('bo', old + 1);counts.get(key) retorna undefined quando a chave não existe, então o valor alternativo inicia a contagem em zero. Mantenha o Map fora da função de requisição para preservá-lo enquanto este servidor estiver em execução. Cada requisição neste exercício representa uma tentativa malsucedida. A expiração será uma etapa separada; atualmente, este Map continua contando até que “Executar” reinicie o servidor.
Desafio
FácilEste é um pequeno projeto de prática. A configuração já foi fornecida; edite apenas exercise.js.
Incremente a contagem para o nome de usuário fornecido e retorne-a em count. Envie POST {"username":"ada"} duas vezes para /result: as contagens serão 1 e depois 2. Enviar bo resulta em 1; enviar ada novamente resulta em 3.
Crie o Map você mesmo, colocando-o de modo que a segunda solicitação possa acessar a primeira contagem. Pressionar “Jogar” novamente reinicia o servidor e limpa esse armazenamento em memória.
Experimente você mesmo
// Crie o armazenamento das contagens em um local onde ele persista entre as requisições.
export function exercise({ username }) {
return { count: 0 };
}
Todas as lições de Autenticação e segurança
1Senhas
Bytes e texto hexadecimalDerivando uma chave de senhaUm novo saltNunca armazene senhasComparando bytes da chaveVerificando uma senhaRegras de cadastro4Proprietários e Segurança
Somente suas anotaçõesFunções de administradorPratique por conta própria: Playground de Express