IT 성장일기

[Tomcat] 세션 아이디 설정하기 본문

Server/Tomcat

[Tomcat] 세션 아이디 설정하기

고 양 2023. 9. 11. 00:55
반응형
세션 아이디 설정하기

세션 아이디는 웹 어플리케이션이 사용자를 추적하고 인증상태를 유지하기 위해 사용되는 고유식별자입니다.
대부분의 웹 어플리케이션에서는 기본적으로 JSESSIONID 라는 세션 아이디를 사용합니다.

 

 

 

세션아이디를 따로 설정하는 이유

기본 세션 아이디를 그대로 사용할 경우 몇가지 문제점이 생길 수 있습니다.

 

  1. 보안상 취약점이 생겨 세션 하이재킹(Session Hijacking) 공격 등에 노출될 수 있습니다.
  2. 하나의 도메인에서 포트만 달리 하여 여러 개의 웹 사이트를 띄워놓을 때
    쿠키에 저장된 세션 아이디가 충돌하여 하나의 사이트로 인식되는 경우가 생깁니다. 이럴 경우 로그인이 풀리게 됩니다.

이러한 문제들을 해결하기 위해 세션 아이디를 다르게 설정하는 것이 권장됩니다.

 

 

 

세션 아이디 설정

세션 아이디를 설정하는 방법은 서버마다 다를 수 있지만
일반적으로 사용하는 톰캣 서버에서는 아래와 같은 몇가지 방법을 통해 설정할 수 있습니다.

 

1. WEB.xml 파일 수정하기

<session-config>
    <session-timeout>30</session-timeout>
    <cookie-config>
        <name>MYSESSIONID</name>
        <path>/</path>
        <http-only>true</http-only>
        <secure>true</secure>
        <max-age>86400</max-age>
    </cookie-config>
</session-config>

 

<name> 태그 내부에 세션 아이디를 설정하고 <max-age> 태그 내부에는 쿠키 유효기간을 설정했습니다. (1초 * 60초 * 60분 * 24시간 = 86400)
또는 아래와 같은 방법으로 새로운 세션 아이디를 쉽게 부여할 수도 있습니다.

 <Context docBase="" path="/" reloadable="true" source="" sessionCookieName="new_JSESSIONID"/>

 

위 코드는 WEB.xml 파일 내부의 <Context> 태그의 속성값을 이용해서 새로운 세션 아이디를 부여하는 방법입니다.

 

2. Java 코드를 통해 변경하기

public void sessionCreated(HttpSessionEvent event) {
    HttpSession session = event.getSession();
    String newSessionId = generateNewSessionId();
    session.setId(newSessionId);
}

private String generateNewSessionId() {
    // 새로운 세션 아이디 생성 코드
}

세션 생성 시 generateNewSessionId 메서드를 호출하고 setId 메서드를 이용하여 세션아이디를 변경합니다.

위와 같이 세션 아이디를 설정하는 이유와 방법에 대해 알아보았습니다.

 

 

감사합니다.🙂

반응형