jsessionid란?

  • jsessionid는 새 세션이 만들어지면 클라이언트가 쿠키를 지원하는지 여부를 서버가 알 수 없으므로, 쿠키와 URL에 모두 jsessionid를 만들어 주는 것을 의미한다.
  • url에 붙거나 헤더에 붙여서 표시된다.
  • jsessionid를 탈취당하면 사용자 ID, Password를 몰라도 접근이 가능하게 된다.

해결방법

1. application.properties에 아래와 같은 옵션을 추가한다.

00_1.png

2. 클래스 계승 시작 SpringBootServletInitializer 재 작성 onStartup 방법

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
	super.onStartup(servletContext);
	servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
	SessionCookieConfig sessionCookieConfig=servletContext.getSessionCookieConfig();
	sessionCookieConfig.setHttpOnly(true);
}

3. @ Configuration 설정 클래스 에 bean 등록

ServletContextInitializer 클래스를 Bean객체로 등록하여 스프링 부트가 jseesion과 관련된 설정을 읽도록 해 주면 된다.

@Bean
public ServletContextInitializer servletContextInitializer1() {
    return new ServletContextInitializer() {
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE) );
        }
    };
}

댓글남기기