Ein ablaufender Zähler
Teil des Abschnitts Authentifizierung und Sicherheit der Node.js-Journey von Coddy. Lektion 22 von 24.
Ein festes Zeitfenster zählt Versuche ab einem Startzeitpunkt. Speichere since neben dem Zähler. Bei einem Zeitfenster von einer Minute läuft es ab, wenn now - since 60000 Millisekunden erreicht.
// Ein Zehn-Sekunden-Zeitfenster in diesem Beispiel
if (now - since >= 10000) {
count = 0;
since = now;
}
count += 1;Behalte innerhalb des Zeitfensters dessen ursprüngliche Startzeit bei. Würdest du sie nach jedem Versuch verschieben, würde sich die Wartezeit immer weiter verlängern. Diese Vorgehensweise stellt now bereit, damit du die Grenze testen kannst, ohne warten zu müssen. Ein laufender Server ermittelt die aktuelle Zeit mit Date.now(). Das Login-Projekt verwendet denselben Datensatz { count, since }.
Aufgabe
EinfachAktualisiere einen Fehlereintrag für eine Minute in exercise.js. Wenn now - since mindestens 60000 beträgt, beginne bei now ein neues Zeitfenster mit count 1. Andernfalls erhöhe count und behalte since bei. Gib beide Felder zurück.
POST {"count":3,"since":0,"now":10000}: Erwarte {"count":4,"since":0}. Bei now:60000 erwarte {"count":1,"since":60000}.
Das anfängliche GET /result verwendet das bereitgestellte Beispiel {"count": 2, "since": 1000, "now": 61000}. Verwende POST /result mit einem JSON-Body, um andere Eingaben auszuprobieren.
Probier es selbst
export function exercise({ count, since, now }) {
return { count: count + 1, since };
}
Alle Lektionen in Authentifizierung und Sicherheit
1Passwörter
Bytes und Hex-TextEinen Passwortschlüssel ableitenEin neues SaltPasswörter niemals speichernSchlüssel-Bytes vergleichenEin Passwort überprüfenRegeln für die Registrierung4Eigentümer und Sicherheit
Nur deine NotizenAdmin-RollenÜbe selbstständig: Express-Playground