RequestMappingHandlerMapping

RequestMappingHandlerMapping

我现有的Spring Web MVC应用程序在Controller中具有以下处理程序映射。

    @RequestMapping(method = RequestMethod.GET, value = "/welcome")

我触发了以下请求o​​jit_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;
    }

}

09-04 13:53