Repository navigation
Route-Login: E-Mail-Code verrät nicht mehr, ob eine Adresse freigeschaltet ist - #459
Merged
Merged
Conversation
…altet ist - /route-auth/send-code antwortet für jede Adresse gleich (Status, Text, mindestens 300 ms); die Mail geht im Hintergrund raus, Verzögerung oder Fehler beim Versand erreichen die Antwort nicht (route_auth_otp_failed). - Nur die Adresse der Route bekommt einen Code (Groß-/Kleinschreibung und Leerzeichen egal). Eine andere Adresse zählt für die IP-Sperre mit dem Gewicht "Unbekannte Benutzernamen" (unknown_user_weight). - Code-Schritt: falscher Code und "nie ein Code geschickt" scheitern gleich; ein falscher Code zählt einfach. - "Code erneut senden" beim zweiten Faktor geht an die Adresse der wartenden Sitzung (bisher wurde die leere Eingabe verglichen); die wartende Sitzung gilt nur für ihre eigene Route. - Fehlversuche stehen als route_auth_failed im Protokoll (Route, gekürzte Adresse, IP, Schritt). - Doku: FEATURES, Handbuch- und Guide-FAQ. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Worum geht es
Beim Route-Login mit E-Mail-Code hat
/route-auth/send-codebei einer falschen Adresse mit einem eigenen Fehler (email_mismatch) geantwortet. So ließ sich ausprobieren, welche Adresse für eine Route freigeschaltet ist.Änderungen
Keine Rückschlüsse mehr auf die Adresse
send-codeantwortet für jede Adresse gleich: Status 200, gleicher Text, mindestens 300 ms. Der Text lautet: „Falls diese Adresse für diese Seite freigeschaltet ist, haben wir Ihnen einen Code geschickt. Er ist 5 Minuten gültig.“ (en: „If this address has access to this page, we have sent you a code. It is valid for 5 minutes.“)route_auth_otp_failedim Protokoll.IP-Sperre und Protokoll
unknown_user_weight, Standard 3). Es läuft über denselben Weg wie beim Admin-Login (lockout.recordFailedAttempt(…, 'route_auth', ip, { unknownUser: true })).route_auth_failed(warning) für Fehlversuche am Route-Login. Es enthält die Route, die gekürzte Adresse (s***@example.com), die IP und den Schritt (password,code_requestodercode). Bei fremden Adressen kommtunknownUser: truedazu. Passwort und Code werden nie protokolliert.Nebenbei behoben (gleicher Ablauf)
send-codebisher eine wartende 2FA-Sitzung verlangt. Ohne Sitzung kam „Sitzung abgelaufen“, deshalb konnte man gar keinen Code anfordern.send-codeundverify-code. Die gekürzte Adresse kommt aus der Sitzung und nicht mehr aus der Routen-Konfiguration.Die bestehenden Limits bleiben unverändert:
send-code3 pro 5 min und IP,verify-code5 pro 15 min und IP, Kontosperre, Code 5 Minuten gültig.Doku: FEATURES.md (Route Auth, Tabelle zur Gewichtung), Handbuch-FAQ und Guide-FAQ.
Tests
tests/route_auth_no_enumeration.test.jsmit 10 Tests. Geprüft werden gleiche Antwort und Mindestzeit, Gewicht 3 bzw. 5, Protokolleintrag, Groß-/Kleinschreibung, Mailverzögerung und Mailfehler, 400/503, der Code-Schritt (falsch und nie gesendet, richtiger Code) sowie das erneute Senden beim zweiten Faktor und die Bindung der Sitzung an ihre Route.npm testlokal mit Node 22: 5958 bestanden. Es scheitern nur die zwei bekannten lokalen Tests (config_hash_stub_guard,plugins_lifecycle„acting user“).Generated by Claude Code