0

ユーザーが 6 回以上ログインしようとすると、自分の Web サイトへのアクセスをブロックしようとしています。私は現在、このコードを使用してクライアントの IP アドレスを取得し、彼のアクセスをブロックしています。

string strHostName = System.Net.Dns.GetHostName();
string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();

問題は、これがパブリック IP アドレスを返すことです。このアドレスを使用すると、クライアント ネットワーク全体へのアクセスがブロックされる可能性があります。

ログイン試行を行っているユーザーのみをブロックする方法はありますか?

4

1 に答える 1

0

短い答え:いいえ。リクエストヘッダーで確認できる他のほとんどのものは、クライアントブラウザーによってスプーフィングされる可能性があるため、簡単に変更できます.

最善の方法は、ブロックするのではなく、同じ IP アドレス/範囲からのログイン試行を阻止することです。同じ IP からの最近の不正なログイン試行が何度もあると、人為的な遅延が発生する可能性があります。たとえば、各試行をサーバー側でログに記録し、その後の各ログイン試行でこのログを確認します。過去 2 分間にログインに 5 回以上失敗した場合は、応答を返す前にアプリケーションを 2 秒待機させます。これにより、自動化されたブルート フォース攻撃の有効性が大幅に低下しますが、同じパブリック IP 上の正当なユーザーが自分のアカウントにアクセスできるようになります。

于 2013-08-02T08:53:30.153 に答える