После обновления версии безопасности до 4.2.4,
мы получаем исключение ниже для URL-адреса, который содержит точку с запятой
бывший:
https: // url / name = somevalue; value = somevalue
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) ~[spring-security-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.security.web.firewall.StrictHttpFirewall.getFirewalledRequest(StrictHttpFirewall.java:120) ~[spring-security-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:193) ~[spring-security-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:185) ~[spring-security-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
Итак, мы настроили кастомную реализацию httpfirewall.
@Bean
public HttpFirewall allowUrlEncodedSlashHttpFirewall()
{
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowUrlEncodedSlash(true);
firewall.setAllowSemicolon(true);
return firewall;
}
а также
@Override
public void configure(WebSecurity web) throws Exception
{
super.configure(web);
web.httpFirewall(this.httpFirewall);
}
После настройки мы сталкиваемся с теми же проблемами.
Затем я отлаживал встроенный класс StrictHttpFirewall.getFirewalledRequest(HttpServletRequest request).
Иногда мы получаем вложенный запрос, например:
firewalledRequest[ firewallwedRequest [ … (request).
и я проверил метод dofilter() в filterchainProxy
Он не очищает SecurityContextHolder, поэтому FilterChainProxy фактически встречается в цепочке дважды.
Возможный дубликат StrictHttpFirewall в Spring Security 4.2 против Spring MVC @MatrixVariable





Пожалуйста, обратитесь к этому вопросу. Возможный дубликат: stackoverflow.com/questions/48580584/…