1

を作成するときに我々は、以下のユースケース持ってブルートフォース攻撃をログに記録:適切な方法およびユーザアカウントに

ユーザーの自己は自分のIDを検証フォームを充填することにより、ビジネスのアカウントを登録することができ、まず、姓とDOB。 IDは、ユーザーだけが事前に知っているものです。ユーザーは、すべての情報と一致するように、5回を持っている

我々は

Table 1 columns: id, attempts 
Table 2 columns: id, fname, lname, dob 

表1及び2は、1対多の関係を持って、我々は検証が試み保存するデータベース内のテーブルのカップルを維持することを計画しています。ユーザーがロックされる前にファーストネーム、ラストネーム、dobを5回推測しようとした場合の例を以下に示します。アプリケーションはテーブル1の試行列をチェックし、特定のIDに対して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と攻撃を変更しようとするとどうなりますか?最初の名前、最後の名前とdobを同じに保ち、IDを推測することによって?

多分私はIDを推測しようとしているユーザーの問題を解決するために、検証テーブルの設計と私のアプローチを再考する必要がありますか?あるいは、この問題を考える良い方法がありますか?

編集:これは、フロントエンドクライアントを使用したREST APIのURLです。 CaptchaはAPIを保護しないかもしれませんか?

答えて

0

「秘密」IDは、無差別に強要される可能性のあるパラメータであるため、セキュリティ値がほとんどないということは間違いありません。攻撃者が最初、最後、dobを知っている場合、検証するまでIDを繰り返し処理できます。

Better:IPアドレスをロックアウト sアドレスからの5回の無効な試行のあと。これは、単一の(あるいは少数の)コンピュータからの素朴なタイプのブルートフォースを防ぎます。

ベスト:その後、CAPTCHAを使用して、スクリプト形式でブルートフォース攻撃からボットネットや自動化システムを防ぐためには、人間の登録を強制するための従来のセキュリティパターンです。

IDが「秘密」の場合、(たとえば4桁ではなく)十分な長さであることも確認する必要があります。多分、8文字の英数字は、あなたがここで容認したいリスクレベルの複雑さを十分に与えるでしょうか?リスク許容度とシステム/データの感度に依存します。

EDIT:REST APIの保護に対処する...許可されたGUIから残りのAPIへの送信を許可する場合は、GUIによって送信されたノンスを使用してから、RESTサービスによって検証されます。 (CSRF保護に似ています)他のプログラムからAPIへの準備完了を許可したいのであれば、基本的にはブルートフォース攻撃を促進するためのレシピです。ほとんどの主要オンラインサービスは、登録のためのAPIを提供していません。しかし、あなたはまだ長い/複雑なIDとロックアウトIPアドレスを使用することができます。

+0

Mine's a REST Api。私はちょうどこの情報で質問を更新しました。キャプチャはフォームの送信を妨げるので、どうすればREST APIを保護できますか? – user6123723

関連する問題