2017-09-04 32 views
1

有以下幾點讓你瞭解我的應用程序:如何添加請求超時或連接超時傳統的Spring MVC應用程序,以防止'慢HTTP POST漏洞「

  1. 我有一個傳統的彈簧網運行野生運行中的應用程序。
  2. 在我的應用程序已經視圖控制器和其他控制器。
  3. 我有web.xml文件和jboss的xml文件來配置上下文路徑。
  4. 請求控制器自帶或者通過Ajax請求或簡單得到 來自瀏覽器的請求。

我想保護我的應用程序免受可能的'緩慢HTTP發佈漏洞'的影響。爲此,我決定如果任何請求超過指定的時間量,那麼我的應用程序將釋放該連接並拋出請求超時異常。

我的問題是: 如何在傳統的spring mvc應用程序中實現請求時間?

注意:您非常歡迎如果您有任何其他解決方案來防止「緩慢的HTTP POST漏洞」。

回答

0

您可以將每個控制器調用委託給一個單獨的線程,然後在該線程違反超時條件時監視該線程。 Java的ExecutorService已經支持awaitTermination()這個特性。因爲(a)你會將你的控制器調用委託給一個單獨的線程池,並且(b)它會鼓勵你使用異步控制器(或者更一般的;您可以安全地管理此線程池中可用的資源。有關此方法的更多詳細信息herehere

但是,如果您在每個控制器調用在單獨的線程中運行(與原始調用分開),則您將執行此委派,然後您將能夠控制該線程可以運行多長時間,配置的超時時間,您可以使用相關的HTTP status進行響應。