Белый список для URL перенаправления при весенней загрузке - PullRequest
0 голосов
/ 01 июня 2018

У нас есть проблема безопасности в нашем проекте.Злоумышленник может перехватить запрос на вход в систему и изменить в нем заголовок «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
}

До сих пор я пробовал следующее:

  1. , чтобы использовать TomcatEmbeddedServletContainerFactory и добавить там Valve.
  2. для использования 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;
    }

Заранее благодарен за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...