본문 바로가기

네트워크보안/asp

세션(Session)이란?

클라이언트와 서버간의 상태를 유지하기 위한 일반적인 방법으로 세션이라는 개념을 이용합니다. 클라이어트가 처음 접속했을 때 클라이언트에 유일한 세션 ID를 부여하게 되고 클라이언트는 이 ID를 자동으로 쿠키에 임시 저장하거나, 쿠키가 지원되지 않을 경우에 URL 끝에 붙여 가지고 다니게 됩니다. 따라서, 이 세션 ID는 클라이언트가 재접속 했을 때 해당 클라이언트를 구분할 수 있는 수단이 됩니다.

당연히 서버에서도 같은 세션 ID를 보관 하고 있어야 하며 클라이언트는 서버에 요청을 할 때 부여 받은 세션 ID를 가지고 요청함으로써 서버는 클라이언트를 구분하게 됩니다. 그리고 서버에 보관된 세션 ID 하나당 메모리를 사용할 수 있게 되며 이 세션 메모리에는 변수=값의 형식으로 데이터를 보관할 수 있습니다. 이와 같은 관계를 그림으로 나타내면 아래와 같습니다.

그림 6-8 세션과 클라이언트, 서버의 관계

위 그림을 보면 클라이언트가 처음 서버에 접속하면 서버는 클라이언트에 350975BC2334 라는 고유한 ID를 부여합니다. 그러면 클라이언트는 그 ID를 쿠키에 임시로 저장해 놓거나 URL Rewriting을 통해 URL 뒤에 매달고서 서버에게 접속하게 되므로 서버는 이 ID를 식별해서 클라이언트를 구별할 수 있습니다.

서버 입장에서 세션을 생각해 보면 클라이언트가 언제 재접속 할 지 모르기 때문에 서버는 클라이언트에게 부여한 세션 ID를 버릴 수도 없는 상황이 됩니다. 그래서 서버의 세션은 Time 한계를 두어 시간이 만료되면 스스로 세션을 소멸하는 동작을 하게 됩니다.

이러한 방법은 일반적으로 가장 많이 사용하는 방법이며 이 세션의 동작원리는 전자상거래의 login된 상태의 구분이나 클라이언트의 보유 정보등을 동적으로 관리하는 곳에 주로 사용됩니다.

n HttpSession session = request.getSession()

n ID à session.getID()

n Last Accessed à session.getLastAccessedTime()

n Max inactive à getMaxInactiveInterval(), setMaxInactiveInterval(int interval)

n Creation time à getCreationTime()

need to then convert to Date() object, as returns milliseconds since 1 January 1970 00:00:00 GMT

다음부터 본격적으로 세션 값을 세팅하는 것에 대해 알아보겠습니다.

'네트워크보안 > asp' 카테고리의 다른 글

세션(Session) 값 얻기  (0) 2012.02.15
세션(Session) 값 설정  (0) 2012.02.15
쿠키 읽어오기  (0) 2012.02.15
쿠키 설정하기  (0) 2012.02.15
HTTP 메시지 헤더와 쿠키  (0) 2012.02.15