Web リクエストのレート制限アルゴリズムを実装する最善の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/1450217

質問

可能性のある/部分的な重複:

スパム攻撃やブルート フォース攻撃を軽減するために、Web アプリケーションに移動時間ウィンドウ レート制限アルゴリズムを実装する最良の方法を探しています。

使用例としては、「過去 5 分間に特定の IP から失敗したログイン試行の最大数」、「過去 N 分間の (投稿/投票/etc...) の最大数」などがあります。

私は、X 分ごとに統計をハードリセットする (twitter API のように) よりも、移動時間ウィンドウ アルゴリズムを使用することを好みます。

これは C#/ASP.Net アプリ用です。

役に立ちましたか?

解決

memcachedののような高速メモリベースのハッシュテーブルを使用してください。キーが最大制限時間であるべきであるあなたが制限されている対象(例えば、IP)と各格納された値の満了となります。

各キーに格納された値は、それらが各試行のために時間と共に、アクションを実行で行われ、最後のN試行のシリアライズリストが含まれます。

他のヒント

私たちは、律速のこの種のためのより良いアルゴリズムであるのトークンバケットをました。私たちの操作の人々がコンセプトに精通しているので、それは広くルータ/スイッチに使われています。

このページは面白い読み取りであることがわかります:

http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx

次のように開始するために外を見るために

セクションます:

  

を防止サービス拒否(DoS)攻撃

     でも、就学前のハッカーが繰り返し高価な作業を行うWebサービスを呼び出すことによって、サーバーをダウンさせることができるので、

Webサービスは、ハッカーのための最も魅力的なターゲットです。

編集:ここに同様の質問:

最良の方法は、ASPでの要求の調整を実装します。 NET MVCですか

私はちょうど質問<のhref = "https://stackoverflow.com/questions/42411498/block-api-requests-for-5-mins-if-api-rate-limit-exceeds-に答えを追加しましたAPIのレート制限を超えた場合> 5分間ブロックAPIリクエストを「-webapithrottle-Cを使用しました。 の
 私は毎分のみ60の要求を許可するようにHttpRuntime.Cacheを使用しました。制限値を超えると、次の5分間のAPIをブロックします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top