禁用Apache Tomcat 6.0中的PUT TRACE DELETE请求

11

我需要在我的应用服务器Apache Tomcat 6.0上禁用PUT、DELETE和TRACE HTTP请求。

到目前为止,我搜索到的所有来源都指向了httpd.conf中的limit参数。因此,我要事先说明一下,我没有使用Apache Web服务器,而是直接由Tomcat处理请求,因此不存在httpd.conf的问题。

请建议我如何在Tomcat上进行操作?

2个回答

21

在WEBINF中,您可以添加安全约束:

<security-constraint>
     <web-resource-collection>
          <web-resource-name>Forbidden</web-resource-name>
          <url-pattern>/blah/*</url-pattern>
          <http-method>PUT</http-method>
          <http-method>DELETE</http-method>
          <http-method>TRACE</http-method>
     </web-resource-collection>
     <auth-constraint>
          <role-name>empty_role</role-name>
     </auth-constraint>
</security-constraint>

另外,您也可以采取以下两个步骤:

在server.xml中编辑<connector>元素,并添加一个属性:allowTrace="false"。然后编辑DefaultServlet:$CATALINA_HOME/conf/web.xml。

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>
        org.apache.catalina.servlets.DefaultServlet
    </servlet-class>
    <!-- blah blah blah -->
    <init-param>
        <param-name>readonly</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>

谢谢詹姆斯,如果我将其添加到服务器的web.inf而不是应用程序的web.inf中,<url-pattern>应该是什么? (WEBROOT \ conf \ web.xml) - M.N

0

2
修改Servlets最好是一项冒险的任务。它可能无法覆盖doPut,doDelete等框架。还需要修改每个 Servlet,这是一个容易出错的过程。过滤器可能是一种更好的方法,并提供了最多的控制。 - James Schek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接