정보처리기사

[정보처리기사] 웹 세션(Session)이란?

dongkeonkim 2023. 4. 20. 10:03
반응형

페이지를 이동해도 사용자의 로그인 상태를 유지하는 기능을 생각해 봅시다.

우선 쿠키를 이용해서 사용자의 아이디와 비밀번호를 쿠키에 저장한다고 가정해 봅시다.

 

https://myallinone.tistory.com/entry/HTTP-%EC%BF%A0%ED%82%A4%EB%9E%80

 

HTTP 쿠키란?

" 쿠키(Cookie)란? " 쿠키는 웹 브라우저에서 서버로 전송되는 작은 데이터 조각입니다. 쿠키는 웹 사이트를 방문할 때 생성되며 브라우저에 저장됩니다. 이후 새로운 요청시에 쿠키를 헤더에 담아

myallinone.tistory.com

 

페이지를 이동하여도 쿠키를 통해 아이디와 비밀번호를 서버에 전달해서 서버에서는 사용자를 식별하여 해당 사용자의 로그인 상태를 유지시킬 수 있습니다.

하지만 이렇게 쿠키만을 이용하여 인증을 구현하면 쿠키가 유출, 조작 될 수 있는 보안상 매우 큰 문제가 됩니다. 개인 소유가 아닌 컴퓨터에서 사용할 경우 누구나 그 사용자의 비밀번호를 확인할 수 있고, HTTP로 개인 정보를 주고 받는 것은 매우 위험하겠죠?


세션은 비밀번호와 같은 인증 정보를 쿠키에 저장하지 않고, 대신에 사용자의 식별자인 JSESSIONID(Session ID)만을 저장합니다. 서버에는 인증 정보와 더불어 이 ID에 해당하는 로그인 상태, 마지막 로그인 시간, 닉네임, 만료기한 등의 정보를 저장합니다. 보안상 서버는 사용자의 개인 컴퓨터보다는 훨씬 안전하기 때문에 인증에 Session을 이용합니다.

 

 

다음은 일반적으로 세션을 활용하는 과정입니다.

 

1) 클라이언트가 서버에게 요청을 보내면 서버는 새로운 세션 ID를 생성합니다.

2) 서버는 클라이언트에게 이 세션 ID를 포함한 쿠키를 요청에 대한 응답으로 다음과 같은 메시지를 전송하게 됩니다.

 

 HTTP/1.1 200 OK
 Date: Tue, 20 Apr 2023 10:00:00 GMT
 Content-Type: text/html; charset=UTF-8
 Set-Cookie: session_id=abcdefg123456; Path=/; HttpOnly

 

 3) 클라이언트는 서버의 응답을 받고 세션 ID를 쿠키로 저장합니다.

 4) 이후 클라이언트는 서버에 요청할 때 세션 ID가 저장된 쿠키를 요청 헤더에 포함하여 요청합니다.

 

이렇게 서버는 클라이언트가 보낸 쿠키를 확인 후 해당 세션 ID의 클라이언트의 상태를 추적할 수 있는 것입니다.

 

 

그런데 만약 MSA(Microservices Architecture)로 구성된 서버는 세션 정보를 특정 서버에만 저장하면 다른 서버는 해당 세션을 알지 못하는 상황이 벌어집니다. 그럴때 사용하는 것이 레디스(Redis) 같은 인메모리 데이터 저장소 입니다.


반응형