在tomcat上下文中使用mapperDirectoryRedirectEnabled = true和mapperContextRootRedirectEnabled =“ true”有何副作用

时间:2018-10-24 05:27:04

标签: tomcat tomcat7 tomcat8

最近Tomcat发布了CVE-2018-11784(Apache Tomcat重定向问题),并说我使用的tomcat 7版本受到影响。

https://bugzilla.redhat.com/show_bug.cgi?id=1636512 https://lists.apache.org/thread.html/23134c9b5a23892a205dc140cdd8c9c0add233600f76b313dda6bd75@%3Cannounce.tomcat.apache.org%3E

但是,他们也提到了应该采取的缓解措施。缓解步骤之一是在context.xml中将属性mapperDirectoryRedirectEnabled和mapperContextRootRedirectEnabled都设为true。

当前我们不使用任何属性,但根据apache tomcat documentation(https://tomcat.apache.org/tomcat-7.0-doc/config/context.html)),如果未使用,则这些属性的默认值如下所示:

  1. 默认情况下-> mapperContextRootRedirectEnabled将为“ true”
  2. 默认情况下-> mapperDirectoryRedirectEnabled将为“ false”

tomcat cve还提到,如果mapperDirectoryRedirectEnabled =启用, “ 如果启用,则如果需要,映射器(而不是默认的Servlet)将重定向对Web应用程序目录的请求(添加斜杠)。这效率更高,但具有确认目录的副作用是存在的。如果未指定,则使用默认值false。

能否让我知道使用这些属性或启用这些属性时可能发生的副作用?

1 个答案:

答案 0 :(得分:0)

  

当前我们不使用任何属性,但根据apache tomcat documentation(https://tomcat.apache.org/tomcat-7.0-doc/config/context.html)),如果未使用,则这些属性的默认值如下所示:

  1. 在线文档适用于Tomcat的当前(最新)发行版。在撰写本文时即为7.0.91

    如果使用的是任何旧版本,则必须查阅自己的文档webapp副本以获取所使用的版本。特别是在处理安全敏感选项时。请注意,可以从下载页面中的链接从“存档”站点下载旧版本。每个版本都有一个“完整文档”档案(fulldocs.tar.gz)。

  2. 这些选项控制着当客户端请求http://yousite/yourapphttp://yousite/yourapp/yourdir时,如果URL中没有尾部“ /”,则会发生什么情况。

    Tomcat应该分别通过302重定向到http://yousite/yourapp/http://yousite/yourapp/yourdir/进行响应。

    选项控制重定向发生的位置(在调用堆栈/管道中)。管道通常为Connector(土狼)→CoyoteAdapterMapperValvesFiltersServlet

    如果重定向发生在Mapper中,则意味着302重定向响应将在任何Valve查看请求之前发送给客户端。如果您的管道中有RemoteAddrValve,它将看不到该请求,也没有机会拒绝它。

    旧版本的Tomcat(早于2015年12月-早于7.0.66)都表现为两个 mapper * RedirectEnabled 选项都为true。