2012-07-13 73 views
6

我們正在爲我們的Web應用程序使用Tomcat 7。我們提供基於XML的API,以便我們的客戶能夠以機器對機器的方式與我們的服務器進行通信(不需要Web瀏覽器)。這些請求由一個servlet處理。Tomcat和防洪

我們需要防止用戶連續發送太多的請求。我們提供的一些服務涉及對結果進行輪詢,並且用戶可以在沒有任何暫停的情況下在循環中發出請求,從而每秒發出幾十個請求。

我們怎樣才能保護自己免受無用的請求被淹沒?當源自相同IP的請求過多時,是否有一種簡單的方法可以在servlet入口級別阻止請求?有沒有內置的Tomcat來處理這個問題?

回答

4

假設你正在使用Apache反向代理中的Tomcat的前面(如果你不你應該是),apache的層上使用mod_cband

2

你可以自己編碼。對於看着這

出發點是在Servlet API,特別是Filter接口和SerlvetRequest接口的getRemoteHost()方法。

應該很容易寫一個過濾器實現,存儲從每個主機請求的數量和採取行動,如果超過限制。如果你想有一個Java的唯一的解決辦法

+1

說到,這裏的東西我放在一起爲了這個目的:http://code.google.com/p/zxing/source/browse/trunk/zxingorg/src/com/google/zxing/web/DoSFilter。 java這是非常基本的,但可能已經足夠用於此目的。 – 2012-07-13 16:04:02

0

春季安全有很多的阿帕奇的httpd的mod_security的功能。

0

阿帕奇的mod_evasivemod_security 可能涵蓋您的需要在這裏。您可以考慮Cloudflare進行更復雜的嚴重攻擊,這些攻擊需要硬件保護。