誰かが新しいユーザーを作成できるフォームがあります。入力フィールドがフォーカスを失うとすぐに、ユーザー名が取得されたかどうかを確認するために AJAX を追加したいと思います。ユーザー名をチェックして、それが存在するかどうかを確認できるため、ブルートフォース攻撃への道を開く可能性があるため、これについてどうすればよいかよくわかりません。助言がありますか?
5 に答える
おそらく最良のオプションは、サーバー側のスクリプトで、ユーザーが (セッションまたは IP のいずれかに基づいて) 試行回数を 30 分間に適切な制限 (つまり 10 回) に制限することです。
別のオプションは、ページにキャプチャを配置して、ユーザーがブルートフォース プログラムではなく人間であることを確認することです。
なぜだめですか
- 新しいユーザーが試行できる回数を制限する (例: 1 分間に 'n' だけ許可する)
- ユーザーの入力に基づいて利用可能なユーザー名を提案するメカニズムを提供し、ユーザーが通常行う有効な試行回数を減らす
入力フィールドがフォーカスを失ったときにプロンプトを表示する代わりに、フォームが送信されるまで待って確認することができます。ユーザー名が既に使用されている場合は、別のユーザー名を提案するのが確実な解決策です。
フォーラムの場合、ユーザー名は非公開ではありません。サーバー ロジックを使用して、1 分あたりの呼び出し数を制限するだけです。あなたが銀行なら話は別です。ただし、その場合は、ユーザー名を銀行口座に割り当てることができます。
やったことないので、ただの思いつきです。フォームとともに送信される一意の ID (例: uuid) を生成します。ユーザー名を確認するときは、この一意の ID を含めます (確認します)。もちろん、これにはサーバー側の関与が必要ですが、少なくともフォームをレンダリングせずにこの関数を直接呼び出すことはできません。
注: セキュリティを強化するには、ユーザーが値をチェックするたびにフォームの一意の ID を更新する必要があります。