删除“允许”响应标头

时间:2015-11-13 12:17:33

标签: java spring spring-mvc tomcat tomcat7

我有一个使用Spring-MVC,Spring-Security开发并托管在Tomcat 7上的Web应用程序。作为一项安全措施,我还将web.xml中的某些HTTP方法列入白名单,如下所示:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>restricted methods</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method-omission>GET</http-method-omission>
        <http-method-omission>POST</http-method-omission>
        <http-method-omission>DELETE</http-method-omission>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

此时,我期望的是,如果我对任何端点进行了排除的http方法调用,那么我会收到403响应 - 这个设置有效。但403响应还包括一个“允许”标题如下:

Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
  1. 将OPTIONS列入黑名单不是支持/推荐的东西吗?
  2. 为什么允许的http方法列表与我配置的不同?
  3. 我假设Tomcat是在响应中添加Allow标头的那个 - 是吗?
  4. 如何配置tomcat(如果是添加标题则为spring)以不将此标头添加到响应中?

1 个答案:

答案 0 :(得分:0)

您可以更改默认值,而是使用白名单,这比黑名单方法更安全:

    

<headers defaults-disabled="true">
    yourheaders...
</headers>

对于微调,documentation可能会有所帮助。

更新(完全排除路径):

<http auto-config="true" security="none">
  <intercept-url pattern="/**" method="OPTIONS" />
</http>