我现有的Spring Web MVC应用程序在Controller中具有以下处理程序映射。
@RequestMapping(method = RequestMethod.GET, value = "/welcome")
我触发了以下请求ojit_code,效果很好。
问题是
http://www.example.com/welcome.check.blah
也有效!!!
另外,尽管脚本未通过授权,但是将重新显示带有脚本标签的应用程序的HTTP GET请求URL。
示例
http://www.example.com/welcome
会在浏览器窗口中重新显示,并且由于我的授权逻辑而显示“未授权”消息。我想知道这是否是一个安全问题,我是否需要在代码中进行任何编码/过滤?
最佳答案
此行为归因于useSuffixPatternMatch
选项(默认情况下在RequestMappingHandlerMapping
内部为true)(我假设您使用的是Spring MVC 3.1)。
要将useSuffixPatternMatch
设置为false,最简单的方法是使用@Configuration
:
@Configuration
@EnableWebMvc
public class Api extends WebMvcConfigurationSupport {
@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
RequestMappingHandlerMapping mapping = super.requestMappingHandlerMapping();
mapping.setUseSuffixPatternMatch(false);
return mapping;
}
}