jseesion이란?
jseesion은 새 세션이 만들어지면 클라이언트가 쿠키를 지원하는지 여부를 서버가 알 수 없으므로 쿠키와 URL에 모두 jsessionid를 만들어 주는 것을 의미하며 url에 붙어서 보이거나 헤더에 붙어서 나온다.
클라이언트가 두 번째 요청부터 세션 쿠키를 보내오면 URL에 jsessionid를 붙이지 않고, 쿠키가 없으면 계속 URL에 jsessionid 를 붙이게 된다.
뭐..나름 괜찮은 기능 아닌가?
그런데 스프링 부트를 사용하다 jsessionid가 나타나 프로젝트를 납품하다 지적(?)받는 경우가 있었다.
보안에 문제가 있다고하는데 이게 왜 보안에 심대한 문제가 있는지는 잘 모르겠다.
ServletContextInitializer 클래스를 Bean객체로 등록하여 스프링 부트가 jseesion과 관련된 설정을 읽도록 해 주면 끝이난다.
설정(Configuration) 역할을 담당하는 클래스에 아래 메소드를 추가하여 주자.
import java.util.Collections;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.SessionCookieConfig;
import javax.servlet.SessionTrackingMode;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class Configurations implements WebMvcConfigurer {
//j-session 삭제
@Bean
public ServletContextInitializer clearJsession() {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
SessionCookieConfig sessionCookieConfig=servletContext.getSessionCookieConfig();
sessionCookieConfig.setHttpOnly(true);
}
};
}
}
startup이라는 메소드의 첫번째 줄이 핵심적인 내용이다.
traking mode 라고 하는 부분의 세팅을 통해서 jsession이 더 이상 나오지 않도록 하여준다.
끝!
반응형
'Spring framework > Spring boot' 카테고리의 다른 글
Springboot 터널링(스프링 부트 터널링, Spring boot ssh, 스프링 부트 ssh) (2) | 2020.11.25 |
---|---|
SpringBoot InfluxDB(Spring boot 인플럭스DB) (2) | 2020.11.19 |
Spring boot 마이바티스, Spring boot mybatis, 스프링부트 mybatis 적용 (2) | 2019.12.02 |
스프링부트 배너, Springboot banner, 스프링부트 웰컴 메시지 관리 (0) | 2019.12.02 |
스프링부트 타일즈, Springboot tiles, Spring boot 타일즈 적용 (3) | 2019.12.02 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글