У нас есть проблема безопасности в нашем проекте.Злоумышленник может перехватить запрос на вход в систему и изменить в нем заголовок «Host».Сервер отвечает перенаправлением (303), отправляя пользователя на возможно злой сайт.
Можно ли добавить белый список для перенаправлений?
Использование Spring-boot со встроенным tomcat, впроизводство - все это будет за балансировщиком нагрузки.
@Override
protected void configure(HttpSecurity http) throws Exception {
http //@formatter:off
.formLogin()
.loginProcessingUrl("...")
.usernameParameter("...")
.passwordParameter("...")
.loginPage("/").permitAll()
.successHandler(authenticationSuccessHandler)
.failureHandler(authenticationFailureHandler)
.and().logout().permitAll()
.logoutSuccessHandler(logoutSuccessHandler)
.deleteCookies(XSRF_TOKEN, JSESSIONID)
.and().authorizeRequests()
.antMatchers("...").permitAll().anyRequest().authenticated()
.and().csrf().csrfTokenRepository(csrfTokenRepository)
.and().addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)
.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint);//@formatter:on
}
До сих пор я пробовал следующее:
- , чтобы использовать
TomcatEmbeddedServletContainerFactory
и добавить там Valve. - для использования
FilterRegistrationBean
и использования RemoteAddrFilter.setDeny()
.
Опция 1 ° вообще не запустится.Я, очевидно, где-то допускаю ошибки, но эту информацию трудно найти, и у меня в голове нет полной картины того, что делать.
Вариант 2 °, который я нашел здесь на Stackoverflow
иэто кажется правильным, но я не смог заставить его работать.Если setDeny()
присутствует, он даже не позволит мне зайти на мой сайт.Если я это закомментирую, то похоже, что никакой фильтрации вообще не будет.Боб выглядит так:
@Bean
public FilterRegistrationBean remoteAddressFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
RemoteAddrFilter filter = new RemoteAddrFilter();
filter.setDeny("attacker/.com.*");
filter.setDenyStatus(404);
filterRegistrationBean.setFilter(filter);
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
Заранее благодарен за любую помощь.