Um contador com expiração
Parte da seção Autenticação e segurança do Journey de Node.js da Coddy. Lição 22 de 24.
Uma janela fixa conta as tentativas a partir de um horário inicial. Armazene since junto com a contagem. Para uma janela de um minuto, ela expira quando now - since chega a 60000 milissegundos.
// Uma janela de dez segundos neste exemplo
if (now - since >= 10000) {
count = 0;
since = now;
}
count += 1;Durante a janela, mantenha o horário inicial original. Alterá-lo após cada tentativa faria o tempo de espera continuar aumentando. Esta prática fornece now para que você possa testar o limite sem esperar. Um servidor em execução obtém o horário atual de Date.now(). O projeto de login usa o mesmo registro { count, since }.
Desafio
FácilAtualize um registro de falhas de um minuto em exercise.js. Se now - since for pelo menos 60000, inicie uma nova janela em now com contagem 1. Caso contrário, aumente a contagem e mantenha since. Retorne ambos os campos.
POST {"count":3,"since":0,"now":10000}: espere {"count":4,"since":0}. Em now:60000, espere {"count":1,"since":60000}.
O GET /result inicial usa o exemplo fornecido {"count": 2, "since": 1000, "now": 61000}. Use POST /result com um corpo JSON para testar outras entradas.
Experimente você mesmo
export function exercise({ count, since, now }) {
return { count: count + 1, since };
}
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