升级到spring security 4.2.4后,我发现StrictHttpFirewall现在是默认设置.不幸的是,它与弹簧MVC @MatrixVariable的效果不佳,因为";" 是不允许的.怎么解决这个问题?
例:
@GetMapping(path = "/{param}")
public void example(@PathVariable String param,
@MatrixVariable Map<String, String> matrix) {
//...
}
Run Code Online (Sandbox Code Playgroud)
这可以像这样调用:
mockMvc.perform(get("/someparam;key=value"))
Run Code Online (Sandbox Code Playgroud)
并填充矩阵图.现在Spring安全阻止了它.
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";"
at org.springframework.security.web.firewall.StrictHttpFirewall.rejectedBlacklistedUrls(StrictHttpFirewall.java:140)
Run Code Online (Sandbox Code Playgroud)
我可以使用一个允许分号的自定义HttpFirewall.有没有办法在不使用禁用字符的情况下使用@MatrixVariable?
以来:
5.0.1
我想这是向后移植的?