KamoCRM

ショートワンタイムコードは制限なしで推測できない

FixSecurityService
Shipped
2026年9月17日 4:48 UTC
Author
Kamo
Commit
357d3a0

プラットフォームのメールやテキストは、カウントなしでチェックされたコードです。 - POST /api/recover/email/verify-code は、8-hex-character のリセットコードを ALONE から取り、すべての値に対して一致させました 口座のリセットは30分。 任意のアカウントの一致は、そのアカウントの回復セッションになりました。 - POST /api/recover/sms/verify:既知の番号、10分、カウントなしの6桁のテキストコード。 - POST /api/recover/questions/verifyと/seed/verify:セキュリティの回答(色、都市)とシードフレーズ、カウントなし。 - POST /api/security/verify-email {userId, code}: 6桁のコード、24時間、セッションなし。 最初の成功は、 アカウントに自動ログインキー。 - POST /api/account/phone/verify:新しい回復電話番号、カウントなしの6桁のコード。 - POST ********************は、効果を取らない5つの制限がありました。 カウントを書きました すると、デフォルトの @Transactional ルールは書き込みバックをロールし、コントローラー自身のトランザクションは ロールバック専用 CodeAttemptLimiter (Redis, 固定ウィンドウ, 比較 BEFORE をカウントするので、並列では、それの過去にレースすることはできません) - 5は、アカウント、指定されたアドレス、電話番号、またはコードごとに1時間試みます。 その試み 第5は、コードを消費したテキストコード、登録コードが無効にリセットする(リセット行) 電話変更コードを消費しました。 成功は主題をクリアします。 - 30 は、すべてのエンドポイントで、パブリック クライアント アドレスあたりの 1 時間を試みます。 プライベートホップはスキップされます。 1つのプロキシアドレスは誰にも立ち向かうでしょう。 - プラットフォーム全体で10分間のコードのみのリセット試み。 Refusals は 429 で Retry-After と retryAfterSeconds で ボディ. リミッターは、Redis の停電に失敗します。 ログインスロットルサービスと検証ResendRateLimiter。 すべての比較は現在定数です。 リクエスト名が1つである場合、リセットコードはアカウントにバインドされます。 認証コードは `email` を受け付けます(アドレスは入力されます)。 リセットページは、 /email/initiate が解決する方法を解決し、アカウントのリセットだけをチェックしました。 未知の アドレスは、既知のアドレスのように正確にカウントされます。 コードのみの形状は、デプロイされていないログインページでも動作します。 まだ(kamo-loginは同じ変更セットでアドレスを送信します)、プラットフォーム全体の予算。 noRollbackFor を宣言した間違ったコードを記述する方法。 MFAの回復コードは既に後ろにあった ログインスロットルゲートと60ビットです。 Vonage 電話チェックは、独自の試み制限を実施します。 テスト: - CodeAttemptLimiterTest:ウィンドウ、第5番目は、最後にマークされた、アドレスとプラットフォーム予算、ハッシュキー、フェイルオープン。 - RecoveryCodeAttemptsTest:アカウントのバインディング、第5回目の支出、未知のアドレスカウント、コードのみ それでも機能し、実行します。, SMS, セキュリティの回答. メニュー - CodeAttemptWritesCommitTest: 各メソッドは、実際のトランザクションインターセプターが拒否をコミットします。 - RecoveryAttemptsWireTest: アドレスとIPは、サービスに到達します。 429 すべての3つのコントローラーのマッピング。 ミュータント(各制限、支出、バインディング、予算、noRollbackFor削除) 各テストに失敗します.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing