Kurze Einmalcodes können nicht mehr ohne Limit erraten werden

FixSecurityService
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.

Alle Änderungen

Wie, was Sie sehen Versand?

Alles kommt in Ihrem Arbeitsbereich für sich. Starten Sie mit dem kostenlosen Plan und lesen Sie diese Seite in einem Monat wieder.

Free Forever startenPreisgestaltung anzeigen