- Verschifft
- 17. September 2026 um 04:48 UTC
- Autor
- Kamo
- Ausschuss
- 357d3a0
Jeder kurze Code, den die Plattform mailt oder Texte wurde ohne Zählung geprüft: - POST /api/recover/email/verify-code nahm den 8-hex-Zeichen-Reset-Code ALONE und passte ihn gegen jeden Konto ist ausstehender Reset, für 30 Minuten. Ein Spiel auf jedem Konto wurde eine Erholungssitzung für dieses Konto. - POST /api/recover/sms/verify: ein 6-stelliger Textcode für eine bekannte Nummer, 10 Minuten, keine Zählung. - POST /api/Wiederherstellung/Fragen/verifizieren und /seed/verifizieren: Sicherheitsantworten (eine Farbe, eine Stadt) und Samenphrasen, keine Zählung. - POST /api/security/verify-email {userId, Code': ein 6-stelliger Code, 24 Stunden, keine Sitzung. Der erste Erfolg prägt ein auto-login Schlüssel auf das Konto. - POST /api/account/phone/verifizieren: ein 6-stelliger Code, der eine neue Wiederherstellungsnummer beweist, keine Zählung. - POST ************ hatte eine Fünf-Versuchs-Grenze, die nie in Kraft trat. Es schrieb die Zählung und dann warf, die Standard-@Transaktionelle Regel rollte die schreiben zurück, und der Controller eigene Transaktion war markiert Rollback-only. CodeAttemptLimiter (Redis, feste Fenster, gezählt VOR dem Vergleich, so dass parallele Vermutungen nicht an ihm vorbeirennen können): - 5 Versuche pro Stunde pro Thema: das Konto, die getippte Adresse, die Telefonnummer oder der Code. Der Versuch, dass verwendet die fünfte verbringt den Code (Reset-Zeilen markiert, texted codes verbraucht, Registrierungscodes ungültig, Telefon-Wechsel-Code verbraucht). Ein Erfolg klärt das Thema. - 30 Versuche pro Stunde pro öffentlicher Kundenadresse, über all diese Endpunkte hinweg. Private Hopfen werden übersprungen, seit Eine Proxy-Adresse würde für alle stehen. - 50 Code-only-Reset-Versuche pro 10 Minuten, Plattform-weit. Die Verweigerungen sind 429 mit Retry-After und erneut versuchenEineSeconds im Körper. Der Limiter scheitert offen auf einem Redis Ausfall, wie LoginThrottleService und VerificationResendRateLimiter. Alle Vergleiche sind jetzt konstante Zeit. Der Reset-Code ist an ein Konto gebunden, wenn die Anfrage einen benennt: überprüfen-code akzeptiert "email" (die eingegebene Adresse auf die zurückgesetzte Seite, löst die Art /email/initiate auflöst und überprüft nur die zurückgesetzten Accounts. Ein Unbekannter Die Adresse wird genau wie eine bekannte gezählt. Die Code-only-Form funktioniert immer noch für eine Login-Seite, die nicht eingesetzt hat noch (kamo-login sendet die Adresse in der gleichen Änderung gesetzt), unter dem Plattform-weiten Budget. Methoden, die schreiben, was ein falscher Code ausgegeben hat, deklarieren jetzt noRollbackFor. MFA Recovery Codes waren bereits hinter LoginThrottleGate und sind 60 Bits. Die Vonage-Telefon-Check erzwingt seine eigene Versuchsbegrenzung. Prüfungen: - CodeAttemptLimiterTest: Fenster, die fünfte markierte letzte, Adresse und Plattform Budgets, hashed Schlüssel, scheiter-open. - RecoveryCodeVersucheTest: Kontobindung, Ausgaben für die fünfte, Ablehnung nach, unbekannte Adresse gezählt, Code-only arbeitet und läuft aus, SMS, Sicherheitsantworten. **************** - CodeAttemptWritesCommitTest: Jede Methode durch einen echten TransactionInterceptor verpflichtet sich ihre Ablehnung. - RecoveryAttemptsWireTest: Adresse und IP erreichen den Dienst; 429 Mapping auf allen drei Controllern. Zwölf Mutanten (jede Grenze, Ausgaben, Bindung, Budget und kein RollbackFor entfernt) jeder scheitert einen Test.