유저의 인증 중에 새 세션을 생성해야합니다.

 

세션 고정 공격은 정당한 사용자가 공격자가 알고 있는 세션 아이디를 사용하도록 강제할 때 발생합니다. 고정 공격을 피하기 위해서는, 유저가 인증을 할 때 마다 새로운 세션을 생성하고, 세션이 만료될 때 기존 세션(공격자가 알고있는)을 삭제하거나 무효화하는 것이 좋은 습관입니다.

규칙을 어긴 코드

스프링 시큐리티 콘텍스트에서, 세션 고정 보호는 기본적으로 활성화되지만, sessionFixation().none() 메소드를 통해 비활성화 될 수 있습니다.

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.sessionManagement()
    .sessionFixation().none(); // 규칙을 어긴 코드: 존재하는 세션이 계속 유지됩니다.
}

규칙을 준수한 해결책

스프링 시큐리티 콘텍스트에서, 세션 고정 보호는 다음과 같이 활성화 시킬 수 있습니다.

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.sessionManagement()
    .sessionFixation().newSession(); // 규칙을 준수한 코드: 기존 세션의 Attributes 를 복사하지 않고 새로운 세션을 생성합니다.

    // or

    http.sessionManagement()
    .sessionFixation().migrateSession(); // 규칙을 준수한 코드: 새로운 세션이 생성되면, 이전 세션은 만료되고 이전 세션의 Attributes 가 복사됩니다.
}

참고


If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project