I codici brevi una volta non possono più essere indovinati senza limite

FixSecurityService
Spegnimento
17 settembre 2026 alle ore 04:48 UTC
Autore
Kamo
Impegno
357d3a0

Ogni codice breve le mail della piattaforma o i testi sono stati controllati senza contare: - POST /api/recover/email/verify-code ha preso il codice di reset 8-hex-character ALONE e lo ha abbinato contro ogni L'account e' in sospeso per 30 minuti. Una partita su qualsiasi conto è diventata una sessione di recupero per quel conto. - POST /api/recover/sms/verify: un codice a 6 cifre per un numero noto, 10 minuti, nessun conteggio. - POST /api/recover/questions/verify e /seed/verify: risposte di sicurezza (un colore, una città) e frasi di seme, nessun conteggio. - POST /api/security/verify-email {userId, code}: un codice a 6 cifre, 24 ore, nessuna sessione. Il primo successo minge un chiave auto-login nel conto. - POST /api/account/phone/verify: un codice a 6 cifre che mostra un nuovo numero di telefono di recupero, nessun conto. Aveva un limite di cinque dollari che non ha mai avuto effetto. Ha scritto il conte e poi ha lanciato, la regola predefinita @Transactional ha rotolato indietro la scrittura, e la propria transazione del controller era marcato solo rollback. CodeAttemptLimiter (Redis, finestre fisse, contato BEFORE il confronto così le ipotesi parallele non possono superarlo): - 5 tentativi all'ora per soggetto: l'account, l'indirizzo digitato, il numero di telefono o il codice. Il tentativo che utilizza il quinto spende il codice (reimposta le righe contrassegnate con i codici utilizzati, i codici di testo consumati, i codici di registrazione invalidati, codice di cambio del telefono consumato). Un successo cancella l'argomento. - 30 tentativi un'ora all'indirizzo del cliente pubblico, attraverso tutti questi endpoint. I salti privati sono saltati, dal momento che un indirizzo proxy sarebbe valido per tutti. - 50 tentativi di reset di codice per 10 minuti, su piattaforma. I rifiuti sono 429 con Retry-After e retryAfterSeconds nel corpo. Il limitatore non si apre su un outage Redis, come LoginThrottleService e VerificationResendRateLimiter. Tutti i confronti sono ora costanti. Il codice di reset è legato a un account quando il nome della richiesta uno: il codice di verifica accetta `email` (l'indirizzo digitato su la pagina di reset, risolto il modo /email/initiate lo risolve) e controlla solo i reset di quell'account. Un sconosciuto l'indirizzo è contato esattamente come uno conosciuto. La forma in codice funziona ancora per una pagina di login che non ha implementato tuttavia (kamo-login invia l'indirizzo nello stesso set di modifiche), sotto il budget della piattaforma. Metodi che scrivono quello che un codice sbagliato speso ora dichiarare noRollbackFor. I codici di recupero MFA erano già dietro LoginThrottleGate e sono 60 bit. Il controllo del telefono Vonage applica il proprio limite di tentativo. Test: - CodeAttemptLimiterTest: finestre, il quinto contrassegnato ultimo, indirizzo e budget della piattaforma, chiavi hashed, fail-open. - RecoveryCodeAttemptsTest: binding account, spendere sul quinto, rifiuto dopo, indirizzo sconosciuto contato, codice-solo funziona e funziona, SMS, risposte di sicurezza. - No, no. - CodeAttemptWritesCommitTest: ogni metodo attraverso un vero TransactionInterceptor commette il suo rifiuto. - RecoveryAttemptsWireTest: indirizzo e IP raggiungono il servizio; 429 mappatura su tutti e tre i controller. Dodici mutanti (ogni limite, spendere, vincolante, bilancio e noRollbackPer rimosso) ogni falliscono un test.

Tutte le modifiche

Come quello che vedi la spedizione?

Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.

Inizia gratis per sempreVisualizza il prezzo