Обновившись до весенней безопасности 4.2.4, я обнаружил, что StrictHttpFirewall теперь используется по умолчанию. К сожалению, он не очень хорошо работает с пружиной MVC @MatrixVariable, так как ";" больше не допускаются Как обойти это?
Пример:
@GetMapping(path = "/{param}")
public void example(@PathVariable String param,
@MatrixVariable Map<String, String> matrix) {
//...
}
Это можно назвать так:
mockMvc.perform(get("/someparam;key=value"))
И матричная карта будет заполнена. Теперь весенняя охрана блокирует его.
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)
Я мог бы использовать собственный HttpFirewall, который позволял бы использовать точки с запятой. Есть ли способ использовать @MatrixVariable без использования запрещенных символов?
КСТАТИ: Javadoc неверно https://docs.spring.io/autorepo/docs/spring-security/4.2.x/apidocs/index.html?org/springframework/security/web/firewall/StrictHttpFirewall.html
Поскольку:
5.0.1
Я думаю, это было перенесено?