Bremse gegen Passwortraten
Nach fuenf Fehlversuchen wird eine E-Mail-Adresse gesperrt, erst eine Minute, dann doppelt so lang, hoechstens 15 Minuten. Gezaehlt wird je Adresse, auch fuer unbekannte - sonst verriete die Sperre, welche Konten es gibt. Waehrend der Sperre kommt auch das richtige Passwort nicht durch. Jeder Versuch zaehlt sofort und wird bei Erfolg zurueckgenommen. Zwischen Sperrpruefung und Zaehlen liegt damit kein await; gleichzeitige Anfragen kommen so nicht alle an der Sperre vorbei. Der Zaehler liegt im Speicher des einen Prozesses. Ein Neustart setzt ihn zurueck - der Notausgang, falls sich das einzige Ausbilderkonto aussperrt. Beim Aufraeumen wird eine laufende Sperre nie verdraengt. Die Containerabnahme prueft die Sperre im laufenden Abbild. Das Abnahmeprotokoll ist gegen diesen Stand neu erzeugt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5fbf1ac4de
commit
31d7779f45
@@ -471,3 +471,25 @@ Der Grund ist banal und war ein echter Fehler: Wer die dunkle Fassung
|
||||
eingestellt hatte, druckte schwarze Flächen. Eine einzelne Regel für `body`
|
||||
genügt nicht, weil die Karten, Ränder und Marken ihre Farben aus Merkmalen
|
||||
beziehen.
|
||||
|
||||
## E42 · Bremse gegen Passwortraten im Speicher, je E-Mail-Adresse
|
||||
|
||||
Nach fünf Fehlversuchen wird eine Adresse gesperrt, erst eine Minute, dann
|
||||
jeweils doppelt so lang, höchstens 15 Minuten. Eine Stunde ohne Fehlversuch
|
||||
oder eine erfolgreiche Anmeldung setzt den Zähler zurück.
|
||||
|
||||
- **Je Adresse, nicht je Konto.** Auch eine Adresse, die es nicht gibt, wird
|
||||
gesperrt. Sonst verriete die Sperre, welche Konten existieren (E6).
|
||||
- **Nicht je IP-Adresse.** Hinter dem Reverse Proxy käme die Adresse aus
|
||||
`X-Forwarded-For`, und darauf ist nur Verlass, wenn der Proxy richtig
|
||||
eingestellt ist. Bei einer Handvoll Konten lohnt das Durchprobieren vieler
|
||||
Konten mit wenigen Passwörtern ohnehin nicht.
|
||||
- **Obergrenze 15 Minuten.** Wer die Adresse des Ausbilders kennt, soll ihn
|
||||
nicht für Stunden aussperren können.
|
||||
- **Im Speicher, nicht in der Datenbank.** Es läuft genau ein Prozess. Ein
|
||||
Neustart setzt die Zähler zurück – das kann ein Angreifer nicht auslösen,
|
||||
der Betreiber aber schon, wenn er sich selbst ausgesperrt hat
|
||||
(`docker compose restart lernbar`).
|
||||
- **Gezählt wird vor der Prüfung.** Jeder Versuch gilt sofort als Fehlversuch
|
||||
und wird bei Erfolg zurückgenommen. Zwischen Sperrprüfung und Zählen liegt
|
||||
so kein `await`; sonst kämen gleichzeitige Anfragen alle an der Sperre vorbei.
|
||||
|
||||
Reference in New Issue
Block a user