Rag*_*hav 12 java security spring http spring-mvc
我现有的Spring Web MVC应用程序在Controller中具有以下处理程序映射.
@RequestMapping(method = RequestMethod.GET, value = "/welcome")
Run Code Online (Sandbox Code Playgroud)
我触发以下请求http://www.example.com/welcome,这很好.
问题是
http://www.example.com/welcome.check.blah
Run Code Online (Sandbox Code Playgroud)
也有效!!!
此外,具有脚本标记的应用程序的HTTP GET请求URL即使未通过授权也会重新显示.
示例http://www.example.com/welcome<script>alert("hi")</script>在浏览器窗口中被重新显示,并且由于我的授权逻辑,显示"未授权"消息.
我想知道这是否是一个安全问题,我是否需要在代码中进行任何编码/过滤?
tbr*_*lle 15
此行为是由于useSuffixPatternMatch默认情况下的选项RequestMappingHandlerMapping(我假设您使用的是Spring MVC 3.1).
useSuffixPatternMatch: 在将模式与请求匹配时是否使用后缀模式匹配(".*").如果启用,映射到"/ users"的方法也匹配"/users.*".默认值是true".
要设置useSuffixPatternMatch为false,最简单的方法是使用@Configuration:
@Configuration
@EnableWebMvc
public class Api extends WebMvcConfigurationSupport {
@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
RequestMappingHandlerMapping mapping = super.requestMappingHandlerMapping();
mapping.setUseSuffixPatternMatch(false);
return mapping;
}
}
Run Code Online (Sandbox Code Playgroud)
在当前的 Spring Java 配置中,有一种稍微简单的方法来配置相同的东西:
@Configuration
public class DispatcherConfig extends WebMvcConfigurationSupport {
@Override
protected void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4448 次 |
| 最近记录: |