Tomcat安全性约束TRACE不一致

时间:2014-07-31 14:54:42

标签: java tomcat tomcat7 web.xml

我正在使用web.xml尝试禁用我们不使用的HTTP方法,并返回一个不包含任何tomcat信息的正文。

所以我已经改变了应用的web.xml:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>restricted methods</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>TRACE</http-method>
        <http-method>PUT</http-method>
        <http-method>OPTIONS</http-method>
        <http-method>DELETE</http-method>
        <http-method>HEAD</http-method>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

所以被阻止的方法返回403,空体,禁止。但TRACE正在返回带有Tomcat HTML页面的405。

我尝试通过ErrorServlet重定向所有错误:

<error-page>
    <location>/ErrorServlet</location>
</error-page>

这只是确保内容正文为0.但这似乎并没有拦截这些内容。

那么为什么TRACE的处理方式不同?

由于

1 个答案:

答案 0 :(得分:0)

这对我来说非常有意义,因为在除TRACE之外的所有情况下,您都要提交对由URL标识的Web资源的请求,而代码403意味着拒绝访问该资源。尝试使用允许的方法访问相同的资源。可能它也被禁止了吗?

另一方面,TRACE不需要访问任何资源,它只是回应客户端的输入,因此405(&#34; METHOD NOT ALLOWED&#34;)看起来适合这种情况。

拥有自定义错误页面是一个好主意。每个错误代码的具体示例可在此处找到:https://serverfault.com/questions/254102/custom-error-pages-on-apache-tomcat