6

Web アプリケーションに Tomcat 7 を使用しています。XML ベースの API を提供しているため、お客様はマシン ツー マシンの方法でサーバーと通信できます (Web ブラウザーは必要ありません)。リクエストはサーブレットによって処理されます。

ユーザーが大量のリクエストを続けて送信するのを防ぐ必要があります。私たちが提供するサービスの一部には、結果のポーリングが含まれており、ユーザーは一時停止することなくループでリクエストを行い、1 秒あたり数十のリクエストを無料で行う場合があります。

無駄な要求の殺到から身を守るにはどうすればよいでしょうか? 同じ IP から発信されたリクエストが多すぎる場合に、サーブレット エントリ レベルでリクエストをブロックする簡単な方法はありますか? この問題に対処する組み込みの Tomcat はありますか?

4

4 に答える 4

4

tomcat の前で apache リバース プロキシを使用していると仮定すると (そうでない場合)、apache レイヤーでmod_cbandを使用します。

于 2012-07-13T15:50:29.977 に答える
2

自分でコーディングできます。

これを調べるための出発点は、サーブレット API、特に Filter インターフェースと SerlvetRequest インターフェースの getRemoteHost() メソッドです。

各ホストからのリクエストの数を保存し、制限を超えた場合にアクションを実行する Filter 実装を簡単に作成できるはずです。

于 2012-07-13T15:53:23.490 に答える
0

Apacheのmod_evasive またはmod_security は、ここでのニーズに対応できます。ハードウェア保護を必要とするより複雑で深刻な攻撃については、Cloudflareを検討することができます。

于 2013-02-11T15:40:28.473 に答える
0

mod_securityJava のみのソリューションが必要な場合、Spring Security には Apache httpd の多くの機能があります。

于 2012-07-16T00:58:10.367 に答える