白名单用于在春季启动时重定向URL

时间:2018-06-01 10:47:43

标签: java spring-boot tomcat spring-security

我们的项目存在安全问题。攻击者可以拦截登录请求并修改其中的“主机”标头。服务器将响应重定向(303),将用户发送到可能是邪恶的站点。

是否可以为重定向添加白名单?

在嵌入式tomcat中使用Spring-boot,在生产环境中,这一切都将落在负载均衡器之后。

@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()
  3. 1°选项根本不会启动。我显然在某个地方犯了错误,但这些信息很难找到,而且我无法全面了解该怎么做。

    我在Stackoverflow找到了2°选项,感觉这是正确的选择,但是我没能让它发挥作用。如果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;
        }
    

    提前感谢您提供任何帮助。

0 个答案:

没有答案