如何在传统的Spring mvc应用中增加请求超时或连接超时,防止"http post慢"漏洞?



有以下几点可以让您了解我的应用程序:

  1. 我有一个传统的春季网络应用程序在野外运行。
  2. 在我的应用程序中,我有视图控制器和其他控制器。
  3. 我有Web.xml文件和JBOSS XML文件以配置上下文路径。
  4. 对控制器的请求是通过AJAX请求或简单的获取浏览器的请求。

我想使我的应用程序免受可能的"慢速HTTP帖子漏洞"的安全性。为此,我已经确定任何请求是否需要超过指定的时间,然后我的申请发布该连接并提出请求超时例外。

我的问题是:如何在传统的Spring MVC应用程序中实现请求时间?

注意:如果您还有其他解决方案可以防止"慢速http post漏洞"。

您可以将每个控制器调用委托给单独的线程,然后在违反超时条件的情况下监视该线程。Java的ExecutorService已经用其awaitTermination()功能支持了类似的东西。

使用Spring对异步控制器的支持(或更一般地;实施非阻止服务)将正式化此方法,因为(a)将您的控制器调用委托给单独的threadpool和(b))它会鼓励您安全地管理此ThreadPool中可用的资源。有关此方法的更多详细信息。

但是,但是,但是,一旦您在单独的线程中运行每个控制器调用(与原始调用分开,我的意思是),您将能够控制该线程可以运行多长时间,并且是否超过了某些配置超时您可以以相关的HTTP状态做出响应。

最新更新