2012-02-21 1 views
0

私が意図したとおり、次のことが影響するかどうかは疑問でした。私の考えは、意図的に対数を遅くすることであったWebアプリケーションでのユーザーログインの意図的なスリープコール - C#ASP.NET

System.Threading.Thread.Sleep(1000); 

:私は(C#とASP.NETを使用して)私のWebアプリケーション用のカスタムログインページを書いていると私は(ButtonLogIn_Clickに以下を追加する考え)イベント人間が気付くのはあまりに長い間ではなく、マシンによる「列挙」または「ブルートフォース」攻撃の可能性を防ぐのに十分な時間です。

あなたの意見では、私はそれを意図したように効果がありますか?それとも、IISを遅くするか?

編集:ありがとうございました!

+0

遅延させたい場合は、繰り返し試行の速度を抑制しようとして失敗した後にのみ実行します。しかし、それはおそらくWebアプリケーションでは不可能です。古いメインフレームのログイン画面であれば、そのようになります。 –

答えて

1

攻撃者があなたのスレッドを縛っているので、状況が悪化する可能性があります。他の安全性を追加しない限り、彼はまだ多数の同時ログイン試行を行うことができます。

1

リクエスト(スクリプトによって実行された場合)がQueで待機し、IISがさらに苦しむようになるため、問題を気づいた後に歳差しを殺すようになるので、これはまったく役に立ちません。

1

正直言ってこれは正しいことではないようです。そのような基本的なセキュリティ機能を実装できるようにするための構造/コントロールが用意されています。何もないの?あなた自身でコードを作成しなければならない場合は、多分、OSのログインのような数多くの試行の後にスレッドをスリープ状態にすることを検討する価値があります。あなたが示唆しているところでは、成功したログインさえも遅くなるという事実を覚えておく必要があります。私はあなたが7または8回の試行の後にthread.sleepを使用すべきだと思います。たとえば、ブルートフォース攻撃のログイン試行を眠っている可能性がさらに高くなります。

2

リクエストのIPアドレスを確認し、失敗した試行のリストIPアドレスに基づいて、あまりにも多くの試行が行われている場合、特定のIPを禁止するようにコードを記述することができます。

IPのリクエストを一時的にブロックすることもできます。 http://www.iis.net/download/dynamiciprestrictions

関連する問題