1

人々が私の Web サイトのユーザー アカウントをハッキングしようとするのを阻止する手段を講じたいと考えています。いくつかのパスワードを試して覚える必要がある顧客に迷惑をかけずに、この背後にある最善のプロセスは何でしょうか?

数回失敗した後、Google がキャプチャ画像を表示することに気付きました。私は十分な努力をしたことがありませんが、かなりの数の試みの後、彼らはあなたをブロックするに違いないと確信しています.

アカウントへのアクセスを取得するために誰かがブルート フォース アプローチを試みないようにするためのベスト プラクティスはありますか?

キャプチャ?IP アドレスをブロックしていますか (共有 IP を使用している場合、これは機能しますか)?

4

2 に答える 2

1

特定の回数の試行後にユーザーをロックアウトしたり、さらにログイン試行が受け入れられた後にかかる時間を延長したりするスキームは、確かに良い考えです。CAPTCHA も同様です (煩わしいことは別として :)しかし、私の意見では、それらは強力なハードウェアでサポートされている場合にのみ意味があります。

これを行うリソースがある場合にのみ試行する必要があると私が考える理由は、そのようなスキームでは、システム内の潜在的にすべてのユーザーに対して最近行われた試行を覚えておく必要があることを覚えておく必要があるためです。確かに、情報を永続化する方法は数多くありますが、その有効性はさまざまです。メモリ内キャッシュ、データベースなどです。

しかし、何があっても、そのようなメカニズムはアプリケーションに追加の負荷をかけることになり、マイナス面もあります。攻撃者がアプリに飽きたりイライラしたりした場合、サービス拒否攻撃でアプリケーションをダウンさせようとする可能性があります。そして、多くの情報を保持する必要がある複雑なログイン スキームは、その目標を達成するのに大いに役立ちます。

このような機能を適用することに決めた場合は、最初にラボでストレステストを行い、「どれだけ使用できるか」を把握することをお勧めします。これにより、ハードウェアをアップグレードする必要があるかどうかがわかります。 )

永続性を必要とせずに実行できる簡単な方法は、PBKDF2、bcrypt、または scrypt などのパスワード ハッシュを適用することです。これらの攻撃者は、可能な限り攻撃を困難にするために人為的に速度を落とします。ただし、これらもアプリケーションに追加の計算負担をかけることに注意してください (ただし、前述の対策よりは少ないと思われます)。そのため、最初にいくつかのストレス テストを行います。

于 2012-05-26T13:41:54.810 に答える
1

最善の策は、ユーザー名ごとにロックアウト (10 分、15 分など) し、設定された期間 (30 分のローリング ウィンドウなど) で可能な試行回数を比較的多く (10 または 20 程度) することです。試行回数を 3 または 5 よりも多く設定すると、平均的なユーザーは、ロックアウトが発生する前にパスワードのリセットをあきらめるか、再設定を試みます。

失敗した試行データ (IP、ユーザー名、タイムスタンプなど) をログに記録して、通常のユーザーの動作と総当たり攻撃の動作の違いを理解することを検討してください。これにより、時間の経過とともにポリシーを改善できます。

また、強力なパスワード ポリシー (少なくとも 1 つの数字を含む 8 文字以上) を検討してください。

また、何らかの形式の多要素認証を検討することもできます。キャプチャについて言及しましたが、他にも役立つテクニックがたくさんあります。私が使用しているあるサイトでは、ユーザーの IP アドレスを認識できない場合、ユーザーの電子メール アドレスにトークンを電子メールで送信し、ユーザーは新しい IP アドレスからアクセスする前にそのトークンを提示する必要があります。

于 2012-05-26T05:26:12.980 に答える