Spring MVC应用程序过滤URL中的HTML-这是安全问题吗?
问题内容:
我现有的Spring Web MVC应用程序在Controller中具有以下处理程序映射。
@RequestMapping(method = RequestMethod.GET, value = "/welcome")
我触发了以下请求http://www.example.com/welcome
,效果很好。
问题是
http://www.example.com/welcome.check.blah
也有效!!!
另外,尽管脚本未通过授权,但是将重新显示带有脚本标记的应用程序的HTTP GET请求URL。
这样的示例http://www.example.com/welcome<script>alert("hi")</script>
在浏览器窗口中重新显示,并由于我的授权逻辑而显示“未授权”消息。
我想知道这是否是一个安全问题,我是否需要在代码中进行任何编码/过滤?
问题答案:
此行为是由于useSuffixPatternMatch
默认情况下内部为true
的选项所致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;
}
}