【问题标题】:Multipart file upload using spring boot with tomcat version 9.0.31 is failing使用带有 tomcat 版本 9.0.31 的 Spring Boot 上传多部分文件失败
【发布时间】:2020-06-21 04:02:38
【问题描述】:

Spring Boot 应用程序中的多部分文件上传不适用于 tomcat 版本 9.0.31。但此功能在旧版本 9.0.30 上运行良好。但此版本存在漏洞并强制升级版本。 请参阅下面给出的错误

 "timestamp": "2020-03-09T08:01:56.169+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.impl.IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly",

错误日志如下

nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.impl.IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly] with root causeorg.apache.tomcat.util.http.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly

请帮助解决这个问题。

【问题讨论】:

  • tomcat 9.0.31 版我也面临同样的问题,但在 9.0.30 版中,它按预期工作,但在 owasp 依赖检查器中显示漏洞
  • 你是怎么得到这个错误的?我有同样的错误,但无法得到任何错误

标签: java spring-boot tomcat multipart


【解决方案1】:

我认为该错误已在最新的 tomcat 版本 9.0.33 中修复。

在 9.0.31 版本中无法使用的多部分文件上传功能也已通过升级修复。另外,我尝试使用owasp依赖检查器检查是否有漏洞,发现这个版本没有漏洞。

只需使用以下 version 升级您的依赖项:

<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>9.0.33</version>
</dependency>

【讨论】:

    【解决方案2】:

    这是 Tomcat 9.0.31 中的一个错误。 Apache 的 Bugzilla 中已经有一个条目:https://bz.apache.org/bugzilla/show_bug.cgi?id=64195

    根据错误报告,为防止此问题,您可以 - 使用 Http11Nio2Protocol 代替 Http11NioProtocol - 使用 Tomcat 9.0.30,这不会发生(但在 Tomcat 的 AJP 协议中有严重的 Ghostcat 漏洞)

    该问题将在 9.0.32(尚未发布)中修复。

    注意:当使用 http 而不是 https 时,问题也不会出现。

    【讨论】:

    • 使用 Http11Nio2Protocol 而不是 Http11NioProtocol
    【解决方案3】:

    另一种可能的解决方案是检查运行 Tomcat 服务器的用户。

    在我的情况下,它没有以 root 用户运行。如果是这种情况,只需以root用户重新启动tomcat服务器即可解决问题。

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 1970-01-01
      • 2018-01-30
      • 2014-05-01
      • 1970-01-01
      • 2022-10-22
      • 2021-08-05
      • 2021-01-04
      • 1970-01-01
      相关资源
      最近更新 更多