gpt4 book ai didi

java - 如何在传统的spring mvc应用程序中添加请求超时或连接超时来防止“''慢http post漏洞”?

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:44 25 4
gpt4 key购买 nike

以下几点可以让您了解我的申请:

  1. 我有一个在 Wild-fly 上运行的传统 Spring Web 应用程序。
  2. 在我的应用程序中,我有 View Controller 和其他 Controller 。
  3. 我有 web.xml 文件和 jboss xml 文件来配置上下文路径。
  4. 对 Controller 的请求通过 ajax 请求或简单的 get 来实现来自浏览器的请求。

我希望确保我的应用程序免受可能的“慢速 HTTP Post 漏洞”的影响。为此,我决定如果任何请求花费的时间超过指定的时间,那么我的应用程序会释放该连接并抛出请求超时异常。

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

注意:如果您有任何其他解决方案来防止“慢 HTTP post 漏洞”,我们非常欢迎。

最佳答案

您可以将每个 Controller 调用委托(delegate)给一个单独的线程,然后监视该线程(如果/直到它违反超时条件)。 Java 的 ExecutorService 已经通过其 awaitTermination() 功能支持类似的功能。

使用 Spring 对异步 Controller 的支持(或者更一般地说,实现非阻塞服务)将使这种方法形式化,因为 (a) 它会强制您将 Controller 调用委托(delegate)给单独的线程池,并且 (b) 它会鼓励您安全地管理此线程池中的可用资源。有关此方法的更多详细信息 herehere .

但是,一旦您让每个 Controller 调用在单独的线程中运行(我的意思是与原始调用分开),您就可以执行此委托(delegate),然后您将能够控制该线程可以运行多长时间,并且如果它超过了某个配置的超时,您可以使用相关的 HTTP status 进行响应。 .

关于java - 如何在传统的spring mvc应用程序中添加请求超时或连接超时来防止“''慢http post漏洞”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46035686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com