Les codes à usage unique courts ne peuvent plus être devinés sans limite

FixSecurityService
Expédié
17 septembre 2026 à 04:48 UTC
Auteur
Kamo
Commite
357d3a0

Chaque code court des mails ou textes de la plate-forme a été vérifié sans compter: - POST /api/recover/email/verify-code a pris le code de réinitialisation de 8 hex-caracter ALONE et l'a mis en correspondance avec tous les la réinitialisation en cours du compte, pendant 30 minutes. Une correspondance sur quelque compte que ce soit est devenue une session de recouvrement pour ce compte. POST /api/recover/sms/vérifier : un code à 6 chiffres libellé par SMS pour un nombre connu, 10 minutes, sans compter. POST /api/recover/questions/verify et /seed/verify: réponses de sécurité (une couleur, une ville) et des phrases de germination, pas de comptage. POST /api/security/verify-email 'userId', code': un code à 6 chiffres, 24 heures, pas de session. Le premier succès ment la sonde Clé d'auto-connexion sur le compte. POST /api/compte/phone/verify: un code à 6 chiffres prouvant un nouveau numéro de téléphone de récupération, sans compter. - POST - avait une limite de cinq tentatives qui n'a jamais pris effet. Il a écrit le décompte et a ensuite lancé, la règle transactionnelle par défaut a refait l'écriture, et la propre transaction du contrôleur était marqués en cas de renversement seulement. CodeAttemptLimiter (Redis, fenêtres fixes, comptés AVANT la comparaison, donc les suppositions parallèles ne peuvent pas passer le devant): - 5 tentatives d'une heure par sujet: le compte, l'adresse dactylographiée, le numéro de téléphone ou le code. La tentative qui utilise le cinquième dépense le code (lignes de réinitialisation marquées usagées, codes textuels consommés, codes d'enregistrement invalidés, Code de changement de téléphone consommé). Un succès est d'approprier le sujet. - 30 tentatives par heure par adresse de client public, pour tous ces critères d'évaluation. Les sauts privés sont sautés, puisque Une adresse de procuration représenterait pour tout le monde. - 50 tentatives de réinitialisation de code uniquement par 10 minutes, à l'échelle de la plate-forme. Les refus sont de 429 avec Retry-After et retryAfterSeconds dans le corps. Le limiteur échoue à une panne de Redis, comme LoginThrottleService et VerificationResendRateLimiter. Toutes les comparaisons sont maintenant à temps constants. Le code de réinitialisation est lié à un compte lorsque la demande désigne un: vérifier-code accepte "email" (l'adresse tapée sur la page de réinitialisation, résolu la façon dont /email/initiate la résout) et vérifie uniquement la réinitialisation de ce compte. Une inconnue l'adresse est comptée exactement comme une adresse connue. La forme uniquement code fonctionne toujours pour une page de connexion qui n'a pas été déployée. Pourtant (kamo-login envoie l'adresse dans le même ensemble de modifications), dans le cadre du budget à l'échelle de la plateforme. Méthodes qui écrivent ce qu'un mauvais code dépensé maintenant déclare noRollbackFor. Les codes de recouvrement de l'AMF étaient déjà en retard LoginThrottleGate et sont de 60 bits. Le chèque téléphonique Vonage impose sa propre limite de tentative. Essais: - CodeAttemptLimiterTest: les fenêtres, la cinquième marque en dernier, les budgets d'adresse et de plate-forme, les clés hachées, les pannes ouvertes. - RecoveryCodeAttemptsTest: compte binding, spend for the fifth, refus after, adresse inconnue comptée, code-only Il fonctionne et fonctionne encore, SMS, réponses de sécurité. - - CodeAttemptWritesCommitTest: chaque méthode par le biais d'un véritable intercepteur de transaction engage son refus. - RecoveryAttemptsWireTest: adresse et IP atteignent le service; 429 cartographie sur les trois contrôleurs. Douze mutants (chaque limite, dépenses, obligations, budget et no RollbackFor supprimé) échouent à un test.

Tous les changements

Comme ce que tu vois expédier ?

Tout cela arrive dans votre espace de travail par lui-même. Commencez sur le plan gratuit et relisez cette page dans un mois.

Commencez gratuitement pour toujoursPrix de visualisation