我只允许在Spring3.2应用程序中使用GET
和POST
方法。
虽然我使用Spring的HiddenHttpMethodFilter (它使用_method
参数来支持各种PUT
),但DELETE
控制器请求映射。
但是安全性是说,我们的服务器允许各种不安全的方法,如OPTIONS
、TRACE
和其他方法,因为当它们操作_method
值时,它们可以看到Allow
头作为响应。
这真的是安全威胁吗?是否可以只对PUT和DELETE使用_method?
发布于 2014-04-06 12:12:35
在Spring中,默认情况下,选项和跟踪方法不被分派给控制器,即使您配置控制器来处理这些方法。因此,默认情况下,Spring保护防止使用这些方法,尽管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>
如果需要,可以按以下方式自定义Accept
标头的内容:
@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);
}
https://stackoverflow.com/questions/22888052
复制相似问题