一尘不染

如何在Tomcat 7中禁用TRACE,OPTIONS http方法的测试

tomcat

我正在尝试在Tomcat级别禁用TRACE和OPTIONS方法。我一直在尝试不同的方法来实现此目的,但是在测试过程中的所有情况下都得到相同的结果。我对telnet(或任何网络)不是很熟悉,但是我在cmd提示符下的测试方式是“
telnet localhost 8080”,然后粘贴TRACE / HTTP / 1.0,然后按Enter键两次。任何帮助是极大的赞赏。

1.) 不可更改 在CATALINA_HOME / CONF / web.xml中

2.)在CATALINA_HOME / conf / web.xml中添加安全约束

<security-constraint>
    <web-resource-collection>
       <web-resource-name>All Access</web-resource-name>
       <url-pattern>/*</url-pattern>
       <http-method>OPTIONS</http-method>
       <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

3.)在CATALINA_HOME / conf / server.xml的Connector标记中添加allowTrace =“ false”

4.)在CATALINA_HOME / conf / server.xml的Connector标签中添加allowTrace =“
false”并将xml添加到CATALINA_HOME / conf / web.xml的Default Servlet标签中

<init-param>
   <param-name>readonly</param-name>
   <param-value>true</param-value>
</init-param>

所有案例的结果

跟踪/ HTTP / 1.0(找不到404)

选项/ HTTP / 1.0(找不到404)

TRACE /(Web服务名称)HTTP / 1.0(找到302)

选项/(网络服务名称)HTTP / 1.0(找到302)

每次更改后,Tomcat都会通过发出 shutdown.batstartup.bat来
重新启动。我显然做错了(测试/配置),因为无论更改什么,我都得到相同的结果。我读到我应该期待405错误来表示http方法已被禁用。


阅读 1595

收藏
2020-06-16

共1个答案

一尘不染

当您没有部署ROOT Web应用程序时,这些结果是预期的。如果您遵循重定向,则会获得对有效资源的302响应,您将开始看到405响应。

这取决于Tomcat执行各种检查的顺序,以及Mapper是处理请求的第一批组件之一(它确定将请求路由到的Host,Web应用程序和Servlet)。

前两个返回404,因为您没有默认的Web应用程序。Mapper会尽早返回404(以提高效率),因此您不会得到检查TRACE是否已启用的代码。

第二个2返回302s,因为映射器再次将/ web-service重定向到/ name-web-service
/。再次,这种情况尽早发生,并且再次发生在检查是否启用TRACE之前。

如果使用存在的路径进行测试,则应该看到期望的405。

2020-06-16