- 
          
          세션 정책 및 고정세션 공격방지SPRING/스프링 시큐리티 2021. 8. 3. 10:51스프링 시큐리티에서는 세션 관련 정책을 설정할 수 있다. 하나의 계정에 최대 몇개의 세션을 유지할 것인지, 새로운 사용자가 접근하면 로그인을 금지할 것인지 아니면 기존 사용자를 로그아웃 시킬 것인 지 등 정책 설정이 필요하다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired UserDetailsService userDetailsService; @Override protected void configure(HttpSecurity http) throws Exception { // 모든 리소스에 대한 인증완료시 접근 허용 http .authorizeRequests() .anyRequest().authenticated(); // form Login 사용 http .formLogin(); // 세션 정책 (최대 세션 개수 1개로 설정 및 해당 횟수 넘으면 로그인 X) http .sessionManagement() .maximumSessions(1) // 최대 세션 개수 1 .maxSessionsPreventsLogin(true); // 최대 세션 개수를 초과할 시에 로그인 방지 } }위 설정에서 동일 계정으로 2번 로그인 시 아래와 같은 화면이 나온다.  .maxSessionsPreventsLogin(false); 로 설정시에는 기존 사용자가 세션아웃이 된다. 고정세션공격 보호하기 공격자가 JESSIONID를 가로채서 Session을 공유하여 공격 -> 사용자에게 접속할때마다 JESSIONID를 발급해서 막음. 아무 설정을 하지 않으면 default 값인 changeSessionId로 설정 1. changeSessionId() - 새로운 세션ID가 발급됨. - 이전 세션 사용이 가능함. http .sessionManagement() .sessionFixation() .changeSessionId() .maximumSessions(1);2. newSession() - 새로운 세션ID가 발급됨. - 이전 세션 사용이 불가능함. http .sessionManagement() .sessionFixation() .newSession();3. none() - 아무설정을 하지 않음. (고정세션 공격이 됨) http .sessionManagement() .sessionFixation().none();'SPRING > 스프링 시큐리티' 카테고리의 다른 글remember-me (0) 2021.08.01 로그아웃 (0) 2021.08.01 FORM 인증 - 기본 (0) 2021.08.01 Security Configuration 클래스 기본 설정 (0) 2021.08.01 의존성 추가 및 기본 세팅 (0) 2021.08.01