次のユースケースがあります。
ユーザーは、ID、名、姓、および生年月日を検証フォームに入力することで、ビジネス アカウントを自己登録できます。ID は、ユーザーだけが事前に知っているものです。ユーザーは、すべての情報を照合するために 5 回試行します
検証の試行を保存するデータベースにいくつかのテーブルを維持することを計画しています
Table 1 columns: id, attempts
Table 2 columns: id, fname, lname, dob
表 1 と 2 は一対多の関係にあります。これは、ロックされる前に、ユーザーが名、姓、および住所を 5 回推測しようとした場合に何が起こるかの例です。アプリケーションはテーブル 1 の試行列をチェックし、特定の ID の試行回数が 5 回または 5 回を超える場合、ユーザー アカウント (その特定の ID を持つ) はロックされているものとして扱われます。
table 1
id attempts
1234 5
table 2
id fname lname dob
1234 john doe 19900101
1234 jane doe 19900101
1234 jason doe 19900101
1234 john dae 20010102
1234 roger smith 19960101
上記のアプローチの問題は、失敗した試行のみを ID で追跡していることです。ユーザーが ID を変更して攻撃しようとするとどうなりますか? ファーストネーム、ラストネーム、ドブを同じにしてIDを推測することで?
おそらく、ユーザーがIDを推測しようとする問題を解決するために、検証テーブルの設計とアプローチを再考する必要がありますか?? または、この問題について考えるより良い方法はありますか?
編集: これは、フロントエンド クライアントを使用した REST Api の URL です。Captcha は API を保護しないのでしょうか??