2012-07-13 12 views
6

私たちはWebアプリケーションにTomcat 7を使用しています。私たちは、XMLベースのAPIを提供しており、お客様はマシン間でWebブラウザを必要とせずにサーバーと通信できます。リクエストはサーブレットによって処理されます。Tomcatと洪水防止

ユーザーが1つの行に多すぎるリクエストを送信しないようにする必要があります。私たちが提供するサービスの中には、結果をポーリングするものがあり、ユーザーは何もせずに何もせずに何秒も何度も何度も何度も何度も何度も何度も要求を出しています。

私たちは無駄なリクエストで溢れないように自分たちを守ることができますか?同じIPからのリクエストが多すぎる場合、サーブレットのエントリレベルでリクエストをブロックする簡単な方法はありますか?この問題に対処するために何か組み込みのTomcatがありますか?

答えて

4

tomcatの前でapacheリバースプロキシを使用しているとします(必要がない場合)、Apacheのレイヤーでmod_cbandを使用してください。

2

自分でコードすることもできます。

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

各ホストからの要求の数を格納し、制限を超えた場合にアクションを実行するFilter実装を記述するのに十分なはずです。

+1

ここをクリックすると、この目的のためにまとめたものがあります:http://code.google.com/p/zxing/source/browse/trunk/zxingorg/src/com/google/zxing/web/DoSFilter Javaそれはかなり基本的ですが、この目的には十分かもしれません。 –

0

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

0

Apacheのmod_evasive またはmod_security は、あなたの必要性をここでカバーできます。クラウドフレアは、より複雑な深刻な攻撃に対しては、ハードウェアの保護が必要となります。

関連する問題