1

そのため、指数関数的に増加する遅延を使用して、IP アドレスから、またはユーザーに対してログイン要求を調整する領域について読んでいます。これは、サーバーが応答しない人為的な遅延であり、事実上応答に座っています。これまでのところ、この遅延を適切に実装する方法はほとんど見つかりませんでした。

私のオプションは次のとおりです。

Thread.Sleep() - 動作しますが、DDOS 攻撃により、ASP.NET で使用可能なすべてのワーカー スレッドが簡単に消費されます。

また

遅延が期限切れになるまで、429 (Too Many Requests) のようなものを返します。

そのため、すぐに応答してクライアントに作業を与えて再試行する 2 つの異なるアプローチと、サーバーが要求を待機して応答を遅らせる 2 つの異なるアプローチがあります。

理想的には、サーバーに応答を遅らせる後者を使用したいと思います。この回答に従って HttpAsyncHandler を試しました: https://stackoverflow.com/a/1614625

HttpAsyncHandler で Thread.Sleep が発生していますが、問題は、応答が既にクライアントに返されていることです。答えは、応答を戻す前にWaitHandleをブロックする必要があると言っていますが、これを行う方法がわかりません。私が見ることができることから、ワーカースレッドがその間に別の要求を処理するのをまだブロックしていますもちろん。

応答を発行するために、新しい要求と遅延した要求の両方をピックアップするワーカー スレッドが必要であるかのようです。ASP.NET Web フォームでこれを行うことは可能ですか? MVC AsyncController は私が必要としているものに完璧に見えますが、このインスタンスでは使用できません。

4

0 に答える 0