Spring HiddenHttpMethodFilter和阻止HTTP方法

Spring HiddenHttpMethodFilter和阻止HTTP方法,spring,spring-mvc,http-headers,Spring,Spring Mvc,Http Headers,在我的Spring 3.2应用程序中,我只允许使用GET和POST方法 虽然我使用Spring的HiddenHttpMethodFilter,它使用\u方法参数来支持各种放置,删除控制器请求映射 但安全性是说,我们的服务器允许各种不安全的方法,如选项、跟踪和其他方法,因为它们在操作\u方法值时可以看到允许头作为响应 这真的是一种安全威胁吗? 在Spring MVC中,默认情况下,选项和跟踪方法不会分派给控制器,即使您将控制器配置为处理这些方法,是否可以仅将_方法用于PUT和DELETE?。因此,

在我的Spring 3.2应用程序中,我只允许使用
GET
POST
方法

虽然我使用Spring的HiddenHttpMethodFilter,它使用
\u方法
参数来支持各种
放置
删除
控制器请求映射

但安全性是说,我们的服务器允许各种不安全的方法,如
选项
跟踪
和其他方法,因为它们在操作
\u方法
值时可以看到
允许
头作为响应

这真的是一种安全威胁吗?
在Spring MVC中,默认情况下,选项和跟踪方法不会分派给控制器,即使您将控制器配置为处理这些方法,是否可以仅将_方法用于PUT和DELETE?

。因此,默认情况下,SpringMVC保护阻止使用这些方法,即使Accept头显示它们可用

如果需要,可以通过以下方式更改这些默认值:

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/your-mvc-dispatcher-servlet.xml</param-value>
    </init-param>
    <init-param>
        <param-name>dispatchOptionsRequest</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>dispatchTraceRequest</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>
@RequestMapping(value = "/someurl", method = RequestMethod.GET)
public ResponseEntity tryOptions(HttpSession session) throws Exception {
    ... controller logic ...

    HttpHeaders headers = new HttpHeaders();
    headers.set("Allow","POST, GET");
    return new ResponseEntity(headers, HttpStatus..SOME_STATUS_CODE);
}